очистка стека действий одним нажатием - PullRequest
0 голосов
/ 26 ноября 2011

У меня есть запуск 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);  

         }

А2 подписывается на S1, и с А2 пользователь может просматривать периодически обновляемые данные с помощью S1.А2 имеет следующий код для остановки службы 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;
    }  

Моя проблема в том, что, если обновление запускается 10 раз из А2, пользователь должен нажать кнопку назад 10 раз, чтобы выйти из Activity А2.То есть экземпляры A2 накапливаются в стеке Activity.Я перепробовал все флаги во время запуска A2 от S1, но безуспешно.Я хочу выйти из Activity A2 одним нажатием, независимо от того, сколько раз выполняется обновление.

Любые предложения помогут.

1 Ответ

1 голос
/ 26 ноября 2011

Вам нужен SingleInstance для A2, так что независимо от того, сколько раз запускается A2, остается только один экземпляр, и вам нужно нажать кнопку назад только один раз. Определите этот атрибут в файле AndroidManifest.

<activity android:launchMode"singleInstance"/>
...