簡體   English   中英

在 Android 中暫停和恢復線程。 工作室

[英]Pausing and Resuming a Thread in Android. Studio

我只想創建另一個線程,我需要讓它繼續做某事,直到我單擊按鈕 A,然后在我單擊按鈕 B 時恢復,僅此而已。

Thread t = new Thread(new Runnable(){

@Override

public void run(){ 

while(bool) { .... } 

}});

t.start();

這是我試圖遵循的格式。 我從 onCreate 開始,但是如何暫停和恢復線程?

使用wait()notifyAll()

示例代碼供您理解:

class myRunnable implements somethingRunnable {
    private Object mPauseLock;
    private boolean mPaused;
    private boolean mFinish;

    public myRunnable() {
        mPauseLock = new Object();
        mPaused = false;
        mFinish = false;
    }

    public void run() {
        while (!mFinish) {
            // Do stuff here.

            synchronized (mPauseLock) {
                while (mPaused) {
                    try {
                        mPauseLock.wait();
                    } catch (InterruptedException e) {
                    }
                }
            }
        }
    }

    /**
    * Call this on pause.
    */
    public void onPause() {
        synchronized (mPauseLock) {
            mPaused = true;
        }
    }

    /**
    * Call this on resume.
    */
    public void onResume() {
        synchronized (mPauseLock) {
            mPaused = false;
            mPauseLock.notifyAll();
        }
    }

}

希望能幫助到你:)

也許你可以使用另一個標志來做到這一點

例子:

私人 boolean isPause = false;

線程 t = new Thread(new Runnable(){

@Override

公共無效運行(){

而(布爾){
if(isPause){ Thread.sleep(500); 繼續; }

……

}

}});

t.start();

buttonA.setOnClickListener(new View.OnClickListener() {
覆蓋
public void onClick(查看視圖){
isPause =真;
}
});

buttonB.setOnClickListener(new View.OnClickListener() {
覆蓋
public void onClick(查看視圖){
isPause = 假;
}
});

暫無
暫無

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

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