Намеренные дополнения не сохраняются с помощью startActivity - PullRequest
0 голосов
/ 04 октября 2011

Я перезапускаю свое приложение после сбоя, используя Thread.setDefaultUncauhtExceptionHandler(). Я хотел бы передать дополнительное намерение, сообщающее, что оно только что вернулось из мертвых, однако оно не прилипает Вот onCreate из LockedUpActivity.

public class LockedUpActivity extends Activity {
    /** Called when the activity is first created. */

    UncaughtExceptionHandler defaultHandler;

    private static final String RECOVERED = "recovered";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        setDefaultHandler();

        if (getIntent().getBooleanExtra(RECOVERED, false)) {
            Log.i("LockedUp", "Back from the dead!");
            ((TextView) findViewById(R.id.textview)).setText("Back from the dead!");
        }
        else {
            Log.i("LockedUp", "Machiavelli in this..");
        }

    }

    public void goDownInFlames(View v) {
        startActivity(new Intent(this, GoingDownActivity.class));
    }

    private void setDefaultHandler() {
        defaultHandler = Thread.getDefaultUncaughtExceptionHandler();
        Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler() {

            @Override
            public void uncaughtException(Thread thread, Throwable ex) {

                Intent i = new Intent(getApplicationContext(), LockedUpActivity.class);
                i.putExtra(RECOVERED, true);
                startActivity(i);

                defaultHandler.uncaughtException(thread, ex);
            }
        });
    }
}

Как видите, я настраиваю дополнительное, однако оно никогда не будет "Возвращением из мертвых!"

1 Ответ

1 голос
/ 04 октября 2011

Когда происходит сбой приложения или «принудительная остановка», выполняется автоматическая сборка мусора, очищаются переменные, как и стек активности приложения.Дополнения не останутся там, если приложение вылетает.

...