首页 > 其他分享 >AsyncTask重复运行报错的解决办法。

AsyncTask重复运行报错的解决办法。

时间:2023-04-01 12:22:56浏览次数:36  
标签:解决办法 点击 public AsyncTask 报错 按钮 new mStart

 

 

接着这节课老师讲的内容,因为AsyncTask只可以运行一次,如果你在AsyncTask运行中再次点击START按钮的话,也会引发一个崩溃报错(如图)

 

 


Cannot execute task: the task is already running.
翻译过来的意思是:无法执行任务,任务已经在运行中。
这就是在AsyncTask运行中,又点击了一次START的结果,很明显,AsyncTask任务只可以被运行一次,老师在这节课里没有讲过这个问题,不过也有其它的解决办法,我本来开始是想着Android Studio提供了某种办法,可以让一个按钮不被二次点击,然后去百度了一下,但没有找到类似的方法,所以,既然不能点两次,那就干脆只让点一次就好了。

解决办法:
1、当点击了mStart按钮的时候,将这个按钮设置为不可点击状态。
2、当点击了mStop按钮的时候,将mStart按钮设置为可点击状态。
略略略……强行禁止点击2次开始按钮!

 //启动异步任务类
        mStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mProgressTask.isCancelled()){
                    mProgressTask=new ProgressTask();
                }
                mProgressTask.execute();
                mStart.setEnabled(false);//设置为不可点击按钮
            }
        });

//打断异步任务类
        mStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mProgressTask.cancel(true);
                mStart.setEnabled(true);//将开始按钮设置为可点击状态
            }
        });

 


点击开始按钮以后:

 

 

点击结束按钮以后:

 

 

您需要创建 AsyncTask 的构造函数以将当前 Activity 上下文传递为:

   public Context ctx;

    public Your_AsyncTask_Class_Name (Context context){
        super();
        this.ctx=context;

    }
  ......
@Override
protected void onPostExecute(final String result)
{

    MainActivity.mProgressDialogDownload.dismiss();
    PreMainActivity.ENABLE_RESTART = true;
    final Intent i = new Intent(ctx, PreMainActivity.class);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(i);
}

从 Activity 中,您可以将上下文传递为:

AsyncTask_Class_Name asyktaskobj=new AsyncTask_Class_Name(this);
asyktaskobj.execute(); 

转自https://class.m.imooc.com/qadetail?qid=285308

标签:解决办法,点击,public,AsyncTask,报错,按钮,new,mStart
From: https://www.cnblogs.com/skynight/p/17278398.html

相关文章

  • android - AsyncTask 完成后重新启动完整的 Android 应用程序
    我正在编写的应用程序会检查/sdcard下的目录中是否有特殊的ZIP文件,如果没有则开始下载并解压缩它。下载和解压缩工作得很好,即使是子目录。但我需要在完成后重新启动该应用程序-但这是行不通的。起初我有一个特殊的Activity“PreMainActivity.java”只是为了重启目的:imp......
  • 解决tabix建索引报错[E::hts_idx_push] Unsorted positions on sequence #
    当我对两个基因型文件位置取交集,并重新生成两个vcf:$bcftoolsview-Roverlap.lstvariant.filter.vcf.gz-Oz-o300.vcf.gz出现如下错误:$tabix300.vcf.gz[E::hts_idx_push]Unsortedpositionsonsequence#4:29013869followedby29013853tbx_index_buildfailed:300.......
  • 【Azure 应用服务】Function App / App Service 连接 Blob 报错
    问题描述因Blob启用了防火墙功能,但是当把AppService或FunctionApp的出站IP地址都加入到Blob的白名单中,为什么访问还是403错误呢? 问题解答AzureStorage的IP网络规则不适用于同一数据中心的客户端。存储帐户部署在同一区域中的服务使用专用的AzureIP地址进行通信。因此,不......
  • 报错 qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even t
    参考:https://blog.csdn.net/qq_39938666/article/details/120452028  ==========================================  使用ubuntu系统下python的seaborn模块画图,报错:qt.qpa.plugin:CouldnotloadtheQtplatformplugin“xcb“in““eventhoughitwasfound......
  • 关于SQLsever2012报错的一些经验总结
    问题描述:数据库连接实例时出现报错情况;问题截图:  故障软件:SQLsever2012操作系统:windowssever2022R2数据中心期望结果:可以打开之前的实例 总结经验: 上面这张图是1月15号出现的,距离今天已经过去了40天,当时查询了n多资料也没有解决的这个问题,由于过年和其他事务的出现,以至于在......
  • restHighLevelClient 操作报错:listener timeout after waiting for [30000] ms
     java.io.IOException:listenertimeoutafterwaitingfor[30000]msatorg.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:905)atorg.elasticsearch.client.RestClient.performRequest(RestClient.java:229)atorg.elasti......
  • linux ftp服务器报错:425 Data Connection Failed.的解决方法
    原先我写的脚本:然后会出现450错误  修改后的脚本: 再操作前,增加passive一条语句就解决了。参考博客:https://www.codenong.com/cs106853176/    ......
  • 启动gitblit windows服务报错
    选自 https://www.bbsmax.com/A/kPzO3VjQzx/选中gitblitw.exe右键以管理员身份运行点击java进行配置,去掉Usedefault的勾选,重新选择JavaVirtualMachine,选择本地安装的java版本的虚拟机,点击应用,然后确定......
  • 【AGC】集成AGC认证服务facebook登录报错问题
    ​【关键字】认证服务、facebook、AGC 【问题描述】开发者反馈应用集成了AGC认证服务的facebook登录功能,在登录时遇到了一些问题。提示SERVER_ERROR:[code]1675030[message]:执行查询时出错,具体如下所述:开发接入集成认证服务中的fb登陆,目前我们有自己的google包,接入了f......
  • MySQL插入数据报错:1366 Incorrect string value: '\xF0\xA0\xB9\xB3\xF0\xA0...
    [10501]SQLSTATE[22007]:Invaliddatetimeformat:1366Incorrectstringvalue:'\xF0\xA0\xB9\xB3\xF0\xA0...'forcolumnxxxxatrow1是因为MySQL不能识别4个字节的utf8编码的字符,抛出了异常。解决办法将字符类型换成改为utf8mb4数据库:ALTERDATABASE`db_name`C......