2016-07-12 11 views
0

まず最初に、これに関連する多くの質問があることを知っていますが、私は必要なものを見つけられませんでした。彼らはあなたが(私は)run()方法で実行されているループを持っている必要があり、あなたがあなたのThreadあなただけfalsewhile()boolean条件を設定する必要が殺したいときと述べたほとんどすべての答えでホームボタンが押されたときにスレッドを殺す方法

。私はそれを理解していますが、私の場合、すべての反復はGUI Threadに関連しているので、数秒かかることがあります。基本的に、このthreadは、ユーザーがボタンを押してから、いくつかの音を再生するようなものを作るまで待っています。

は、だから私の問題は、それがユーザーを待っているのでit'sは不可能 falsebooleanを設定 threadを停止することで、ユーザはホームボタンを押したときに Threadはuser'sを待って(、彼の実行を継続します入力)と数時間後(ユーザーがボタンを押す時間が終了すると)に音が再生されます。

onStopの方法などでthreadを殺す別の方法がありますか?

ありがとうございます。

+0

を役に立てば幸い、私はあなたが検出したときに実際にそれが可能であることを言うだろうホームボタンを使用しているユーザーのイベントでは、スレッドを強制終了します。スレッドを直接killできない場合は、メソッドがユーザー入力を待っているクラス(オブザーバーパターン)にpingを実行し、ユーザーが移動したという変数を変更する必要があります。ブール値か何かを保持します。スレッドがもはや実行されないときはfalseです。しかし、私はこれが実行可能な、または賢明な方法であるかどうか言うためにアンドロイドスレッドに慣れていません:-) –

+0

多分、あなたはそのループ条件を一度だけではなく、それらの時間のかかるステップの前/後にチェックする必要があります。 – GhostCat

+0

ボタンにonClickListener()をインストールするのではなく、ボタンクリックイベントを待機するスレッドを使用する理由を説明できますか? – Egor

答えて

0
@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);   
} 

その後、次のイベントは、ホームボタンを押すためにトリガーされます:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {  

    if(keyCode == KeyEvent.KEYCODE_HOME) 
    { 
     //Thread shutdown 
    } 
}); 

が、それはアンドロイド知らず

+0

WindowManager.LayoutParams.TYPE_KEYGUARDが見つかりません。セキュリティのためにホームボタン信号。 – Daniel

+0

試しましたか?試していない場合は、不可能ではないと言ってください。あなたがそれを試してもうまくいけば私に知らせてください – Zoe

関連する問題