簡體   English   中英

如何從按鈕重啟java / Android中的線程?

[英]How can I restart a thread in java/Android from a button?

我在java / Android中有一個這樣的線程:

Handler handler = new Handler() {

    @Override
    public void handleMessage(Message msg) {
        // TODO Auto-generated method stub
        update_i();
    }
};



@Override
protected void onStart() {
    // TODO Auto-generated method stub
    super.onStart();

    Thread myThread = new Thread(new Runnable() {
        public void run() {
            while (true) {
                try {
                    handler.sendMessage(handler.obtainMessage());
                    Thread.sleep(timer);
                } catch (Throwable t) {
                }
            }
        }
    });

    myThread.start();
}

運行我的應用程序時,該線程正常工作。 但我想用一個按鈕啟動/重啟線程。

Button.OnClickListener StartButtonOnClickListener = new Button.OnClickListener() {
    @Override
    public void onClick(View v) {

        //start/restart the thread
    }
};

如果我將線程復制到按鈕中,我每次用戶點擊按鈕時都會創建一個新線程。 我希望在用戶第一次單擊按鈕時運行該線程,“kill it”並從頭開始,如果用戶第二次單擊該按鈕(我不想啟動第二個線程)。

我認為Colin是wright你不能重新啟動你需要創建一個新實例,如果仍在運行,中斷函數將停止正在運行的線程。

我建議你創建一個內聯類,內聯實現的instand,它將使它更容易理解。

if(myThread.isAlive()){
    myThread.interrupt(); 
}
myThread = new MyThread();
myThread.start();

希望這可以幫助

您無法重新啟動線程。

從文檔:

Throws IllegalThreadStateException  
    if the Thread has been started before

您可以終止前一個線程,但最后您必須創建線程的第二個實例。


資源:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM