首页 > 其他分享 >Android开发中立即停止AsyncTask和…

Android开发中立即停止AsyncTask和…

时间:2023-04-30 11:01:10浏览次数:33  
标签:AsyncTask 线程 cancel 停止 Android 方法 sleep wait

程序开发中经常会有立即停止线程运行的需要,而通过api是没有办法实现这个目的的,因此对于这个情况,我们需要采取一些“特殊”的方式来实现:

 

  1,判断标志位的办法:

   我们要知道在java的线程中,没有办法停止一个正在运行中的线程。在Android的AsyncTask中也是一样的。如果必须要停止一个线程,我们可以采用这个线程中设置一个标志位,然后在线程run方法或AsyncTask的doInBackground方法中的关键步骤判断这个标志位以决定是否继续执行。然后在需要终止此线程的地方改变这个标志位以达到停止线程的目的。


         2,合理的利用Exception

   从外部调用AsyncTask的cancel方法并不能停止一个已经启动的AsyncTask。这个cancel方法的作用与线程的interrupt方法相似,调用了一个线程的interrupt方法之后线程仍然运行,但是如果该线程的run方法里面调用过sleep的或者wait方法后,处于sleep或wait状态,则sleep和wait立即结束并且抛出InterruptedException异常。AsyncTask的cancel方法也一样,如果在这个Task的doInBackground方法中调用了sleep或wait方法,当在UI线程中调用了这个Task实例的cancel方法之后,sleep或wait立即结束并且抛出InterruptedException异常,但是如果捕获该异常的代码后面还有其他代码,则这些代码还会继续执行。

   

    3,可以在UI上做手脚

    如果用户在后台线程正获取内容时做出了取消的行为,我们可以根据用户的这种行为在UI上立即做出反馈,此时,即使线程完成了数据的Loading,我们也不让数据显示出来,算是一种投机取巧的办法吧。


标签:AsyncTask,线程,cancel,停止,Android,方法,sleep,wait
From: https://blog.51cto.com/u_548275/6237804

相关文章

  • android上传base64的字符图片
    一般来说,目前在手机端上传图片,方法挺多的,不过常用的就是一个文件流,另一个是二进制转base64的字符流,下面分享一下方法网络上都是千篇一律的写法,对于上传过程中失败的问题也很少提及,上传失败的bug,主要的原因当然是编码字符的问题了,一般网上都没有介绍,记得要将base64的字符串转......
  • Android 用户界面---样式和主…
    样式是给View或Window指定外观和格式的属性集合。样式能够指定如高、边距、字体颜色、字体尺寸、背景颜色等属性。样式被定义在一个与布局XML文件分开的XML资源文件中。Android中的样式与Web设计中的层叠式样表类似,允许与内容分开设计。例如,通过使用样式,可以把下面这个布局XML转换......
  • Android应用程序的安装位置(二)
    不应该安装在外部存储器上的应用程序当用户启用USB存储器来跟计算机共享文件时(或者是卸载或移除外部存储器),任何被安装在外部存储器上,并且当前正在运行的应用程序都会被杀死。在USB存储器被禁用和外部存储器被重新挂载到设备上之前,系统不会有效的感知到引用程序的存在。除了终止应......
  • uniapp android app 铃声静音,真正的免打扰
    需要加入这个权限:<uses-permissionandroid:name=\"android.permission.ACCESS_NOTIFICATION_POLICY\"/>代码:/***设置铃声为静音,媒体音量不变(免打扰)**/setDisturb(){//#ifd......
  • “makefile:425: *** 遗漏分隔符 。 停止。”问题解决
    在终端下输入make时出现“makefile:2:***遗漏分隔符。停止。”问题,原因是在编写makefile文件时:3:3.c        gcc-o33.cgcc前的是tab分隔符,不能用空格,否则会出现“makefile:2:***遗漏分隔符。停止。”提示。。。make中规定每一Shell命令之前的开头必须使用<t......
  • Unity中Android API 28之后无法HTTP请求
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复log,获取最新版运行时查看日志的工具。小新:“最近我升级到AndroidAPILevel28之后,发现发布的安卓包,网络请求都不通了,这是咋回事啊?”大智:“遇到这种问题,调试的时候首先去看日志,你研究运行日......
  • 诺基亚收购Symbian反击谷歌Android新秩序
    诺基亚:反击谷歌新秩序两家巨头都有充沛的现金,都有对手机、互联网的远大抱负,于是大战不可避免。      智能手机的用户们请注意,大减价时代开始了!      近日,诺基亚宣布以2.64亿欧元收购全球最大的手机操作系统提供商Symbian,并将其免费向其他手机厂商开放。此前,诺......
  • Windows/Android/iOS 等常见 User-Agent 大全
    UserAgent中文名为用户代理,简称UA,是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。Python爬虫通过伪装UA可以绕过某些检测。以下为搜集的常见的各浏览器的User-Agent,其中:安卓操作......
  • Android剩余磁盘空间
    app启动然后杀掉进程,仍然会被系统进程占用在root机上执行命令:adbshelllsof>c:\loadfiles.txtCOMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEsystem_server2764system481rREG254,8186410......
  • Android进行图片提取文字
        对于外包杯的A37的项目需要,需要进行Andriod的图片文字识别的需要,以下是实现过程。一:对于web的实现图片文字识别二:android的拍照,调用图片实现提取图片三:将web的代码进行移植到Android上一:对于web的实现图片文字识别   对于图片识别,就是接口的调用,主要对百度......