繁体   English   中英

一键清除活动堆栈

[英]clearing stack of activities with just one press

我有一个启动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。

任何建议都会有所帮助。

您需要的是A2的SingleInstance,因此无论启动A2的次数是多少,都只剩下一个实例,并且只需要按一次Back按钮即可。 在AndroidManifest文件中定义此属性。

<activity android:launchMode"singleInstance"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM