繁体   English   中英

Android暂停/恢复AsynTask

[英]Android pause/resume AsynTask

我有一个UI线程(MainActivity)调用一个AsynTask对象(DownloadManager),该对象又调用了3个线程(DownloaderThread)。

如何在不暂停AsynTask或UI线程的情况下暂停/恢复3个DownloaderThreads?

以下是我目前为暂停功能实现的代码,但是单击“暂停”按钮时,应用程序崩溃并显示对话框:“应用程序已停止”。 码:

DownloadManager(AsynTask):

public void onPause() {
    try{
        t0.wait();
        t1.wait();
        t2.wait();
        this.wait();
    }catch (InterruptedException ex){

    }
}

DownloaderThread(实现Runnable,并传递给DownloadManager中的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;
    }
}

一旦启动AsyncTask,您就无法真正暂停它。 但是,您可以在活动被暂停/销毁时存储进度,并在返回原始活动后从进度开始。 但是我建议为您的方案完成任务的最佳方法是使用Service

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM