只打开一个活动,没有主要活动

时间:2010-10-22 06:35:58

标签: android android-activity

我有一个具有一个服务和两个活动的应用程序。一个活动(主要的一个)是一个首选项活动,另一个是一个对话主题活动。该服务有时需要仅打开对话框主题活动(使用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);

2 个答案:

答案 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()。我认为您可以挖掘其余部分。

希望它有所帮助!