活动进入暂停状态时,将调用onPause()
方法,然后调用unregisterReceiver(mReceiver)
中的onPause()
方法。
一个例子:
// in the Activity class
@Override
protected void onPause() {
Log.d("called", "onPause");
super.onPause();
SearchFileService.PauseSearching = true;
unregisterReceiver(mReceiver);
}
// in the Service class
public class SearchFileService extends Service {
public static Boolean PauseSearching = false;
public void run(){
...
while(!searchingStack.isEmpty()){
while(PauseSearching){};// infinite loop to pause execution
// to start search operations
}//while
}//run
}//service
只有接收者没有收听广播,但是在调用onPause()
时服务仍保持运行。在我的示例中,我创建了一个新的服务线程来搜索某些文件。活动暂停后,它将继续搜索。我尝试了以下方法,但效率不高。
我将这行while(PauseSearching){};
添加到搜索函数中,并在调用onPause
时将变量PauseSearching
设置为true
。因此,代码进入无限循环,从而暂停了线程执行。
问题:
在活动处于onPause
状态时,是否有任何好的方法来暂停服务中正在运行的线程?
我认为第一种方法效率很低,使用无限循环执行暂停会很奇怪吗?
Wait
,notify
和synchronization
。然后,我尝试添加wait()
和notify()
方法来同步执行。但是我不知道我应该在onPause()
方法中写什么,应该在哪里放置wait()
,notify()
和syncrhozied
。
欢迎任何建议。 :)))))谢谢。