2011-01-07 4 views
0

アプリケーションが一時停止しているとき(「ホーム」ボタンが押されているとき)、すべてのスレッドを停止する方法を理解しようとしていて、わかりません。アプリケーションが一時停止すると、すべてのスレッドが停止することを確認するにはどうすればよいですか?

私はを持っています:タブホストを含​​む1つのメインアクティビティ、すべてのタブホストはリスト内の1つの項目がクリックされたときに詳細を含む新しいアクティビティが開始されます。各リストは独自のアクティビティ内にあり、リストの内容が常に最新であることを確認するアップデータスレッドを開始します。

これは私が試したものです:私はonPause()、onResume()、onStop()およびonDestroy()イベントを使ってみました。問題は、リストを保持しているアクティビティの主なアクティビティを使用してそれらのイベントを監視すると、リストからアイテムがクリックされるたびに呼び出され、「ホーム」ボタンが実際に押されたとき、状況を区別する方法はありません。

何か不足していますか?これは通常どのように行われますか?

答えて

2

これは、デザインに欠陥があることを示す良い指標です。あなたは、あなたが説明できないスレッドや、自分自身を終わらせないスレッドを配置してはいけません。

各リストは は必ずリストの内容は、この種のことは、サービスで行う必要があり、常に

日まで

で作ることアップデータスレッドを開始し、独自の活動 以内です。

彼らは、リストから 項目が

をクリックする。これは、これらのイベントがどのように動作するかである毎回呼び出されます。アクティビティが表示されなくなると(つまり、新しいアクティビティが前面に表示されると)、onPause()とonStop()に移動します。これを考慮する必要があります。あなたはそれを戦うことはできません、またはそれを回避する。

+0

アクティビティのライフサイクルとサービスについてもう少し読んだ後、私はいくつか考え出しました:1.あなたは、サービスの利用とアクティビティのイベントの呼び出しの両方に慣れています。 「ホーム」ボタンが押されたときにサービスを停止またはアンバインドする方法はありません。 –