我有一個發射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()?如果有其他人,那麼哪些? –