[英]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.