3

Androidアノテーションを使用してAndroid用に開発しています。オブザーバーとしてアクティビティを追加したいシングルトンのオブザーバブル オブジェクトがあります。次のようなもの:

@EActivity(R.layout.myActivity)
public class MyActivity extends SherlockActivity implements Observer { 

    @Bean //has singleton scope
    protected Observerable o;

    @Override
    public void onCreate() {
        o.registerObserver(this);
    }

    @Override
    public void onDestroy() {
        o.unregisterObserver(this);
    }

    //more code

私の質問は on destroy メソッドにあります。Android が停止中または一時停止中のアクティビティを呼び出さに強制終了する状況はありonDestroy()ますか? この場合Observerable、システムで使用されなくなったアクティビティへのライブ参照を保持している可能性があり、これは良くありません。それともそうではありませんか?私の推定では、登録済みオブザーバーのリストにすべてのアクティビティへの弱い参照を保持して、自動的に登録解除できるようにします。これは良い解決策ですか、それとも必要ありませんか?

4

2 に答える 2

2

OS は onDestroy を呼び出さずにプロセスを強制終了できますが、それ以外の場合は onDestroy が呼び出されることに依存できます。したがって、Observable がアクティビティと同じプロセスにあれば問題ありません。

于 2012-09-29T17:11:56.933 に答える
1

Android ドキュメントのアクティビティのライフサイクルによると、このケースは、他のアプリケーションを起動する必要があり、システムに十分なメモリがない場合に発生する可能性があります。

編集:まあ、この場合、システムはまだこのメソッドを呼び出すようです。仕事の流れがいまいちよくわからない…

于 2012-09-29T14:57:16.977 に答える