2017-02-28 13 views
0

以下は、お気に入りのマーク/マークされた記事のデータベースステータスを更新するasynctaskです。更新後、私はアクションバーアイコンを無効にして、選択されていないブックマークから選択されたブックマークに変更します。ビューのフラグメントを呼び出すメソッドのonPostexecuteは安全ですか?

enter image description here

それはonPostExecuteにビューのように宣言されたフィールド上の任意のメソッドを呼び出すために、安全なメモリリークですか?ビューのWeakReferenceを作成する必要はありますか?

フラグメントが追加されない極端な状況を考慮します。 AsynctaskはフラグメントのonStart()メソッドで実行されます。

new PinAsyncTask(articleId) { 
    @Override 
    protected void onPostExecute(Boolean pinned) { 
     if (isAdded()) { 
      supportActionBar.invalidateOptionsMenu(); 
     } 
    } 
}.execute(mArticleInfoCv); 
+0

このブックマークはメニュー項目ですか? –

+0

はい、アクションバーに上記のようなアイコン付きのメニュー項目があります – deadfish

+0

私はあなたが正しく実装されていると思います。 isAdded()をチェックしたときにweakReferenceが必要ないか、メモリリークは発生しません。 (y) –

答えて

0

そのAsyncTaskの両方onPreExecuteonProgressUpdateonPostExecute方法について意見を操作しても安全。このブックマークはメニュー項目ですか?official android docs for AsyncTask

関連する問題