5

アプリケーションの実行が終了したら、いくつかのアプリケーション データをクリアする必要があります。私の知る限り、onDestroy()呼び出されない可能性があります。そこで、ルート アクティビティをチェックisFinishing() == trueonPause()て、このアクティビティとアプリの他のアクティビティが終了中であるかどうかを確認することにしました。しかし、私はこの活動が以下のことを疑っています:

  <activity
        android:name="com.test.AuthorizationActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

ルートアクティビティになりますか?そして、これは一般的に正しい方法ですか?

4

3 に答える 3

1

isFinishingがアクティビティで呼び出された場合にのみ当てはまりfinish、メモリ不足のためにアクティビティが破棄された場合を考慮していないように見えるため、設計を再考する必要があると思います。

ドキュメントから

これは、アクティビティが終了している (finish() が呼び出された) ため、またはシステムがスペースを節約するためにアクティビティのこのインスタンスを一時的に破棄しているために発生する可能性があります。これら 2 つのシナリオは、isFinishing() メソッドで区別できます。

あなたが提案していることについては、アプリケーションの状態データをstatic変数に保存する可能性があります。これは、アプリケーションプロセスが終了したとき (最後のアクティビティ/サービスが終了したとき) にクリアされます。

于 2013-03-17T22:13:13.777 に答える
0

onDestroy() は、アクティビティが破棄されるときに呼び出されます。そのため、天気予報アプリケーションが閉じているかどうかを確認したい場合は、アプリケーションのステータスを通知できる汎用サービスを実装する必要があります。

于 2016-03-30T06:23:03.357 に答える
0

onDestroy呼び出されない可能性があることをどこで読みましたか? Android docsonDestroyによると、アプリケーションが終了すると呼び出されます。

バックグラウンドに移行することと破壊されることを混同している可能性はありますか?

アプリケーションにはさまざまなライフタイムがあります。つまり、全体、可視、およびフォアグラウンドのライフタイムです。here で説明されているように、これらの状態の変化に対してさまざまなコールバックが呼び出されます。

于 2013-03-17T21:53:16.067 に答える