简历,而不是开始启动活动在顶(Resume the Top Activity instead of

2019-06-26 15:17发布

我在我的应用程序的两项活动,一个是发射器和其他被推出,从第一一个显式调用。

我在这里的问题是,当我回到主屏幕由第二活动按home键和启动应用程序,又是第一个活动被启动,即使第二个活动已在后台。

第一活动写入下载所需资产的申请工作,一旦资产被下载它触发第二个活动,并呼吁完成自我。

下面是我的应用程序的清单。

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="14" />

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

    <! Download the Required Assets if not found on SD Card -->
    <activity android:name=".ContentDownload"
        android:screenOrientation="landscape"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|locale" 
        android:launchMode="singleTask"
        android:alwaysRetainTaskState="true">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

    </activity>

    <activity android:name=".ActualAppActivity" 
        android:screenOrientation="landscape" 
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|locale" 
        android:launchMode="singleTask"
        android:alwaysRetainTaskState="true"
        />

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  

<supports-screens android:smallScreens="false" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true"/>

有人可以请指导我如何使第二活动获得控制,而不是直接通过再次率先去,如果发射被调用,它是在后台。

下面是我的onResult回拨方法。

public void onResult(String assetPath, int result)
{
    if(result == RESULT_OK)
    {
        startActivity(new Intent(this, ActualAppActivity.class));
        activity.destroyDownloadActvity();
        finish();
    }
    else
    {
        finish();
        java.lang.System.exit(0);
    }
    activity.destroyDownloadActvity();
    activity = null;
}

Answer 1:

尝试在被指定为启动器的活动在清单中,即,从张贴在问题的原代码的ContentDownload活动的活动的onCreate方法使用以下代码:

if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
  finish();
  return;
}

之前,通过检测,已经有正在运行的任务,和你的应用程序应改为恢复到最后一个可见的活动,显示此将完成你的发射活动。

看到这个页面的Android文档中关于Android清单launchModes: http://developer.android.com/reference/android/R.styleable.html#AndroidManifestActivity_launchMode



Answer 2:

你得有两个定义你的活动launchMode="singleTask" 。 这是你的问题的根源。 删除。



Answer 3:

我用下面的代码LAUNCHER我的应用程序的活动,以防止beeing再次启动应用程序时,它的背景和图标还活着被窃听

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (!isTaskRoot()) {
        finish();
        return;
    }

    // Rest of your onCreate stuff goes here
}

这只是完成了LAUNCHER活动并恢复上次使用的一个。



Answer 4:

不要调用完成()。 你需要传递给意向的标志FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK。

Intent intent = new Intent(this, ActualAppActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK| Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);


Answer 5:

没有看到你的代码,我想你想是这样的答案:

Android的完成活动,并开始一个又一个

您需要设置intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 你还需要finish()的发射活性。



Answer 6:

你可以做的是存储在确定是否该资产或之前尚未加载持久存储的字符串。

然后,在主要活动,您可以检查资产已加载与否,然后启动所需的活动。

if(assets_already_downloaded)
  second_activity();
else
  download_asset_activity();


文章来源: Resume the Top Activity instead of starting the Launcher Activity