我有一个发射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发布A2期间试过所有标志,但没有成功。无论更新运行多少次,我只想退出Activity
A2即可。
任何建议将帮助。
你所说的 “更新” 是什么意思?您是否在A2中使用BroadcastReceiver来捕获S1中的Intents或什么? –
是的,我在A2中使用BroadcastReceiver并获得web服务 –
那么,您是如何在活动堆栈中获得多个A2实例的?哪个组件开始全部?如果S1服务那么为什么它每次都是startActivity()而不是sendBroadcast()?如果有其他人,那么哪些? –