0

私のアプリケーションの主な活動は「破壊」されています。印刷されているログメッセージが破棄されています。しかし、終了が呼び出されているパスは実行されていません。

だから私はどのようにして destroy() が呼び出されるようになったのかを知りたいのです。私のコード、またはその他のシステムエラーから終了しますか。

@Override
protected void onDestroy() {
    try {
        super.onDestroy();

        Log.i("StartUpActivity", "OnDestroy");
        if (asyncTaskForSync != null && !asyncTaskForSync.isCancelled())
            asyncTaskForSync.cancel(true);
        if (DatabaseManager.getInstance() != null)
            DatabaseManager.getInstance().close();

        if (Utils.imageLoader != null)
            Utils.imageLoader.stopThread();
    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

注: 回答: 起動アクティビティ用に android:noHistory="true" を保持していました。他の活動からのバックプレスでこのページが再び表示されないようにしたかった. そして、私はこの活動の破壊でdbのようなすべてのクリーンアップを維持していました. SO nohistory = true が原因で、このアクティビティは自動的に破棄され、すべてのリソースが閉じられ、アプリケーションで例外が発生しました。

このフラグを削除して修正し、2 番目のアクティビティの onbackpressed をオーバーライドしました。

回答ありがとうございます

4

1 に答える 1

1

アクティビティが破棄される理由はいくつかあります。たとえば、ユーザーがデバイスを回転させた場合、デフォルトの動作はアクティビティを破棄して新しいアクティビティを作成することです。

こちらの「設定変更の処理」を参照してくださいhttp://developer.android.com/guide/topics/fundamentals/activities.html

于 2012-01-06T15:21:01.050 に答える