0

アプリを終了するときに、自分で作成したスレッドを停止/中断する必要があります。これどうやってするの?ホームボタンをクリックすると、スレッドが終了します。

基本的に、私が作成したスレッドはセッションとして機能し、1つのログアウトまたはセッション時間が経過するか、アプリが閉じると、スレッドを停止する必要があります。私は最初の2つのケースでそれを管理しましたが、3番目のケースではそれを行うことができません。実際、logCatでアプリを終了すると、スレッドが表示され、自然に終了すると、トースト通知が届きます(これは明らかに望んでいません)。ターンクス!

4

5 に答える 5

3

あなたが何を望んでいるのか本当に理解できたかどうかはわかりませんが、アクティビティのライフサイクルに関連するメソッドを確認する必要があります:

=> http://developer.android.com/reference/android/app/Activity.html

探す

onPause()
onResume()
onStop()

次に、各イベントで、スレッドを停止するなど、スレッドでやりたいことを何でもします

于 2012-04-26T14:29:51.870 に答える
1

まず第一に、Android のマルチタスク システムにより、ホームに戻ってもアプリケーションは実際には終了しません。ホームにヒットすると、アプリケーションが一時停止されるため、onPaused メソッドが呼び出されます。反撃するか、デバイスがより多くのメモリが必要であると判断した場合、アプリケーションは強制終了され、onDestroed が呼び出されます (その間にステップがあります)。Android のライフサイクルを参照してください。ここ

私だったら、アプリケーションを再度作成する必要がある onDestroyed メソッドにスレッド停止を配置しますが、それらはすべて破棄時に呼び出されます。

ただし、あなたの場合、よりServiceのように機能するものが必要なようです。サービスはアクティビティに似ていますが、バックグラウンドで実行され、UI はありません。アプリを起動せずにパンドラが音楽を再生する方法のように。サービスを使用すると、任意のアクティビティから開始し、任意のアクティビティが強制終了されたときに終了することができます (onStop または on Destroy)。それを使用するすべてのアクティビティが強制終了されると、それ自体を強制終了するセマフォのようなソリューションを実行できます。また、それを使用するアクティビティが開始されると (onCreate または onStart)、サービスが開始されます。次に、静的メンバーを介してサービスにアクセスするか、各アクティビティでそのインスタンスを保持できます。

于 2012-04-26T14:32:18.923 に答える
0

すべてのアクティビティについて、 onStopメソッドでスレッドを中断する必要があります。しかし、それは洗練された方法ではありません。AndroidのApplicationクラスを拡張するカスタムクラスを定義し、そのクラスに静的メソッドを使用して目的のロジックを設定するなど、他の解決策がいくつかあるかもしれません。

于 2012-04-26T14:29:35.580 に答える
0

個々のスレッドを停止したい場合は、 yourThread.stop() が機能するはずです。それ以外の場合は、エストラゴンの回答を使用してください。

于 2012-04-26T14:33:47.460 に答える
-3

悪いけどやってみた?

Process.killProcess(Process.myPid());

最後のアクティビティの onDestroy で?

それ以外の場合は、エストラゴンが言ったように、http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycleがアクティビティを使用する正しい方法になります

于 2012-04-26T14:31:53.407 に答える