只需按一下即可清除堆栈活动

时间:2011-11-26 09:38:22

标签: android service android-activity stack task

我有一个启动Activity A1,它有一个启动按钮,启动Service S1:

startButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                Log.i(TAG1, "Starting Update Service");
                startService(serviceIntentS1);
            }
        });

S1取决于某些条件开始Activity A2:

if (giveninteger>=2)
       {   
           Intent intentA2= new Intent(this, A2.class);
           // following line to avoid exception
           intentA2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //to avoid exception
           startActivity(intentA2);  

         }

A2订阅S1,A2用户可以借助S1查看定期更新的数据。 A2有以下代码来停止S1服务:

public void onBackPressed() {
        try {
            Log.i(TAG2, "Killing Update Service");
            stopService(serviceIntentS1);

              } catch (NullPointerException e) {
            Log.i(TAG3, "Service was not running " + e.toString());
        }
        finish();
        System.exit(0);
        return;
    }  

我的问题是,如果更新从A2运行10次,则用户必须按10次后退按钮才能退出Activity A2。这是A2的实例在Activity堆栈中累积。我从S1发布A2期间尝试了所有标志,但没有成功。无论更新运行多少次,我只需要一次退出即可退出Activity A2。

任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:1)

您需要的是A2的SingleInstance,因此无论A2启动的次数如何,只剩下一个实例,您只需按一次后退按钮。 在AndroidManifest文件中定义此属性。

<activity android:launchMode"singleInstance"/>