2016-07-07 6 views
0

私はアクティビティとフラグメントを持っています。 このフラグメントは、3秒間続くスレッドを開始してから、アクティビティのコールバックメソッドを呼び出します。Android - アクティビティへのスレッドとコールバック

設定が変更された場合(つまり向きが変更された場合)、新しい参照で再作成されますが、スレッドには古い参照が残っています。

これを解決する方法はありますか?ありがとう

答えて

0

代わりにスレッドを使用するのはどうですか?ここ

参照:

https://github.com/stephanenicolas/robospice/wiki/Starter-guide

あなたは、スレッド間の断片や活動を伝えたい場合。リスナーのようなインターフェイスを使用します。たとえば、アクティビティが再作成されたり変更されたり、スレッドに通知されたり、リスナを新しいアクティビティに変更したりします。

+0

おかげで、このようなチェックを追加することができますすることができ、実際には私がすることができ、高度なコンポーネントなどのサービスを考えていることですこれよりも高度な目的に使用されています。スレッドは本当にこれに悪い影響を与えますか? –

+0

おそらくはい。それを検索することができます。 – hanbumpark

0

スレッドの代わりにAsyncTaskを使用できます。アクティビティのonDestroy()メソッドでtask.cancel()を呼び出します。

したがって、onDestroy()メソッドがすでに呼び出されていると、アクティビティにコールバックが発生しなくなります。

あなたがスレッドを使用して主張する場合、あなたはあなたのコールバックメソッドにアドバイスを

if(getActivity() == null || getActivity().isFinishing()) 
    return; 
+0

問題は私がコールバックメソッドを実行する必要があることですが、私はこの問題を抱えているので、古い参照を新しいものにリダイレクトする必要があります...スレッドがこの目的のためにうまくいかないかもしれません... –

+0

新しいアクティビティ再作成されたスレッドは再びコールバックを取得します。 –

関連する問題