2011-06-16 11 views
0

私はこの問題をアンドロイドに持っています。私はメインアクティビティを持ってこのスレッドを呼び出します。メインアクティビティを再開した後にスレッドを強制終了しますか?

Runnable work = new Runnable() { 

    public void run() { 
     while (kill) { 
      try { 
       Thread.sleep(5000); 
       connect(); 
       } catch (InterruptedException ex) { 
       Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 


    } 
}; 

MainActivityのpublic booleanを削除します。 私はスレッドを保存するために何ができるので、私はまだスレッドを殺すことができる活動を再開する?

答えて

0

私はあなたがthis solutionが提案しているものに近い何かをしたいと思います。

しかし、実際にThreadでそれをやりたければ、新しいクラスをThreadに拡張し、killMe()というメソッドを追加することをお勧めします。これにより、(のプライベート)ブールkillフラグが変更されます。その後、onRetainNonConfigurationInstance()にはThreadを返すことができ、onResumeで再度検索することができます。あなたが帰って活動が殺されていないなら、それは問題ありません。あなたはThreadkillMe()に電話することができます。

例:

@Override 
    public Object onRetainNonConfigurationInstance() { 
    return thread; 
    } 
+0

私はスレッドのものを試しましたが、今ではスレッドを保存してレジュームに読み込むことができません:S –

+0

どうすればもっと情報が得られますか?何がうまくいきませんでしたか? – dmon

+0

私はなぜonRetainNonConfigurationInstance()が実行しないのか知りません:S、あなたは私に与えることができますか? –

1

なぜあなたは履歴書のスレッドを強制終了しますか?

connect()が中断されたという事実を処理するために、最後にresume部分にスレッドを開始してから、再び開始するときに再接続して操作を行うだけです。

モバイルデバイスの場合、あなたがいる特定の永続的なストレージにチェックマークを付けることをお勧めします。中断された場合は、Activityが再び開始されたときに続行することができます。

あなたのためにデザインが中断される可能性が高いです。

スレッドがOSによって強制終了される可能性がありますので、後で保存して終了させるものはありません。

このようなことを本当に行う必要がある場合は、とは異なるプロセスで実行される可能性がありますので、RemoteServiceを起動してください。

あなたはこの質問を見てみたいことがあります。

Android Remote Service

+0

私は携帯電話上でバックグラウンドで実行するスレッドを必要とするため、アプリケーション(活動)へのユーザーの戻りがスレッドを殺すことができるときだけボタンを押します。 –

関連する問題