地図ビューでApiをプルするスレッドによって車両lat-lntを更新する必要があるプロジェクトがあります。私はupdateThreadがアプリケーションがonStopまたはonPauseを起動するときにスリープし、OnResumeが起動したときに起動します。また、アプリのライフサイクルで決して死ぬことはありません。初めて、私はちょうどupdateingに下記(溶液1)を使用しよう:Androidアップデートのスレッドを制御する方法
new Thread(new Runnable() {
@Override
public void run() {
while(true){
//update-Vehicle-Looping
}
}
}).start();
はしかし、テスト中に、私はアプリがonStopまたはonPauseになったときにスレッドが自動的に殺されていないことが判明、しかし、保証はありませんそれは殺されません、Androidはそれがスレッドが使用しているリソースが必要になるまで実行し続けます。これは大きなリソースコストをかけることはありませんが、スレッドを殺したリスクがあります。
だから、私は別の(Solution2)whickを使用して、スレッドのリフトサイクルを制御できます。
HandlerThread thread = new HandlerThread("MyHandlerThread");
thread.start();
mHandler = new Handler(thread.getLooper());
mHandler.post(UpdateRunable);
Runable UpdateRunable=new Runnable() {
@Override
public void run() {
while(IsRun){
//update-Vehicle-Looping
}
}
};
アプリリフトサイクルで更新スレッドawakerまたは睡眠を制御するために使用IsRun;センス(溶液2)(溶液1)を改善します。スレッドで死亡したリスクを回避することはできません。
アプリのライフサイクルでアップデートスレッドを制御するための提案はありますか?
「サービス」を使用します。 – earthw0rmjim