我有一个具有一个服务和两个活动的应用程序。一个活动(主要的一个)是一个首选项活动,另一个是一个对话主题活动。该服务有时需要仅打开对话框主题活动(使用FLAG_ACTIVITY_NEW_TASK)。 问题是当在后台打开首选项活动时(例如用户按下HOME键而不是BACK,因此活动为OnPause)并且服务尝试打开对话框主题活动,也打开主要活动(进入前景)。 我不想要这个。那么,如何在不弹出主要活动的情况下,只打开服务中的主题活动?
Android Manifest .xml
<service android:name=".SimpleService"> </service>
<activity
android:name=".Preferences" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".popup_activity" android:theme="@android:style/Theme.Dialog" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.SAMPLE_CODE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="screenon.popup.activity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
来自服务:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory("screenon.popup.activity");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
答案 0 :(得分:1)
我相信您正在寻找android:launchMode属性。
答案 1 :(得分:0)
亚历克斯,我相信你想要的只是展示偏好活动一次&amp;然后它必须死(或者让我们说完())。
在这种情况下,您可以覆盖首选项活动的onResume 在暂停后恢复后完成您的偏好活动
@Override
public void onResume()
{
//if activity is resumed after onPause then only run it
this.finish(); //simply kill your activity if it is resumed after pause
}
编辑 - 要知道活动是否暂停,您需要覆盖onPause()。我认为您可以挖掘其余部分。
希望它有所帮助!