1

私のアプリの最初のアクティビティは、いくつかのIO操作を実行するためのスレッドを生成します。その瞬間にユーザーが[戻る]ボタンを押すと、アクティビティは破棄されますが(onDestroyメソッドが呼び出されていることがわかります)、スレッドはまだ実行されています(ログメッセージから確認できます)。

その後、ユーザーがアプリに戻った場合、アクティビティが再度作成されます。この時点で、スレッドがまだ実行されているかどうかを確認します。この場合、新しいスレッドを開始しません。

これを達成するための最良の方法はどれですか?

そうでなければ:これは悪いデザインですか?onDestroyが呼び出されたときに、アクティビティによって開始されたすべてのスレッドが強制終了されることを確認する方がよいでしょうか。

4

2 に答える 2

1

アクティビティを終了するときにスレッドを強制終了します(実行する必要がない限り、サービスを使用して実行します)

使用できるスレッドを確認するには

thread.getState(); 

例:

if (thread.getState() == Thread.State.NEW) 
thread.start();
else
{
    //Do something else here
}
于 2012-10-19T07:36:37.450 に答える
0

onDestroyでスレッドが有効であるかどうかを確認できます。これは、アクティビティを終了するときにスレッドが中断される可能性があります。

public void onDestroy() {
try{
            if(myThread!=null & myThread.isAlive()){
                myThread.interrupt();

        }catch (Exception e) {
            e.printStackTrace();
        }
}
于 2012-10-19T08:01:05.800 に答える