私が構築しているアプリには 2 つのワーカー スレッドがあり、1 つはネットワーク用、もう 1 つはネットワーク データの受信用です。私が抱えている問題は、で閉じる前にネットワーク スレッドからSocket
、BufferedReader
、およびオブジェクトを保存する方法がわからないことです。オブジェクトを永続化する必要はありません。Android が でアクティビティを強制終了した場合にワーカー スレッドを実行したままにしない方法でオブジェクトを保存する方法が必要なだけです。これらのオブジェクトを のバンドルに保存する方法はありますか、それとも別の方法がありますか (構成の変更だけでなく、のように)? また、アクティビティを強制終了した場合、Android はアプリケーションのすべてのスレッドを自動的に閉じますか? それは私の問題も解決するでしょう。ありがとうございました。PrintWriter
onPause()
onPause()
onSaveInstanceState()
onRetainNonConfigurationInstance()
1383 次
2 に答える
2
いくつか質問があります。いくつか答えてみます。
Threads
、Sockets
、BufferedReader
およびPrintWriter
はパーセルできません。ファイル記述子は分割できますが、残念ながらこれらの複雑なタイプは分割できません。これらの複雑な型には多くの状態があり、それぞれの実装を知らずにバンドルに分割するのは困難です。
onPause()
殺しとは違います。onPause
プロセスがフォアグラウンドで実行されないことを意味します。したがって、基本的にはビューがありません。ただし、スレッドに何かを行わない限り、スレッドは引き続き存在し、実行されます。interrupt()
独自のスレッドを管理する場合は、停止する必要があるときにスレッドを呼び出せるように、スレッドへの参照を保持することをお勧めします。(または、スレッドを拡張した場合は、カスタム メソッドによってトリガーできる実行メソッドに何らかの終了条件を設定します)
アプリが本当に強制終了された場合、スレッドも強制終了されます。
于 2012-09-19T05:21:13.437 に答える
0
コードで onPause() メソッドをオーバーライドし、onPause() イベントがトリガーされたときに共有設定にデータを保存できます。
于 2012-09-19T09:06:04.323 に答える