0
我有一个UI线程(MainActivity)调用一个AsynTask对象(DownloadManager),它反过来调用3个线程(DownloaderThread)。Android暂停/恢复AsynTask
如何在不暂停AsynTask或UI线程的情况下暂停/恢复3个DownloaderThreads?
以下是我目前为暂停功能实现的代码,但当单击“暂停”按钮时,应用程序会崩溃,并显示对话框:“应用程序已停止”。代码:
下载管理器(AsynTask):
public void onPause() {
try{
t0.wait();
t1.wait();
t2.wait();
this.wait();
}catch (InterruptedException ex){
}
}
DownloaderThread(实现Runnable并传递到一个Thread实例在下载管理器:
public class DownloaderThread implements Runnable {
private Object mPauseLock;
private Boolean mPaused;
private Boolean mFinished;
public void run(){
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);
try{
while(!mFinished){
//do something
synchronized (mPauseLock){
while (mPaused){
try{
mPauseLock.wait();
}catch (InterruptedException e){
}
}
}
}
}
}
public void onPause(){
synchronized (mPauseLock){
mPaused = true;
}
}
我已经了解到,它不可能调用DownloaderThread的onPause方法,而不使用某种线程来运行对象映射。如果有人可以指导如何实现这一点,那将是很棒的.. –