Android - 停止线程的最佳且安全的方法

2023-11-25

我想知道在 Android 中停止线程的最佳方法是什么。我知道我可以使用AsyncTask代替它并且有一个cancel()方法。我必须使用Thread在我的情况下。这是我的使用方式Thread:

Runnable runnable = new Runnable() {
        @Override
        public void run() {
            //doing some work
        }
    };
new Thread(runnable).start();

那么,有人知道哪种是停止线程的最佳方法吗?


你应该让你的线程支持中断。基本上你可以打电话yourThread.interrupt()要停止线程,并且在 run() 方法中,您需要定期检查Thread.interrupted()

有一个很好的教程here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - 停止线程的最佳且安全的方法 的相关文章

随机推荐

  • 是否可以将 Xdebug 与内置 PHP 测试服务器一起使用?

    基本上我的问题说明了一切 我希望能够检查脚本变量的状态 设置断点等 而无需安装 Nginx apache 或 PHP FPM 这是否可行 如果不可行我的选择是什么 好吧 所以分手了本文我已经成功使用xdebug 我使用自制程序在 Mac O
  • 如何在 Cocoa Objective-C 中将文本转换为图像

    我正在寻找一种在 Cocoa 中将一段文本转换为图像的方法 一切似乎都描述了将图像转换为文本 而不是文本转换为图像 简单地说 我想取一个单词 例如 Kevin 并将其转换为位图图像进行操作并保存为 JPEG 给出答案的人都很棒 感谢您提供三
  • 无法将 Spring 应用程序部署到 Websphere

    我在开发阶段一直在开发 tomcat 的应用程序 随着我们的进展 我的客户希望部署到 websphere 我试图在 websphere 8 5 上这样做 但由于某种原因我似乎遇到了问题 Tomcat 很简单 我只是加入了战争 一切都按预期进
  • 设置连接到 Web 音频 api 的音频元素的playbackRate

    我一直在尝试使用 createMediaElementSource 将音频元素连接到网络音频 api 并让它工作 但我需要做的一件事是更改音频标签的播放速率 但我无法让它工作 如果您尝试运行下面的代码 您会发现它一直有效 直到您取消注释我们
  • Android - 工具栏标题居中[重复]

    这个问题在这里已经有答案了 我的应用程序中有一个工具栏 如下所示
  • 如何从文件的字节数组中获取文件名?

    我有代表我通过网络传输的文件的字节 除了在文件系统上手动重建文件外 如何从文件中获取信息 例如getName getPath 等 换句话说 我从机器 A 上的一个文件开始 我使用 FileUtils 将文件转换为字节数组 我通过网络将该文件
  • python 字节码兼容性

    python 字节码在不同版本之间的兼容性程度如何 我不是在谈论 python2 x 到 python3 x 而是说 Python33 到 python34 我并不是为了 安全 而追求它 我使用 Cython 将程序的大部分转换为 C 但是
  • 拉动刷新并加载更多列表视图,如 facebook [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 here i am using sliding drawer in that on click home icon it shows 3 tabs 1 which concept
  • 在 Java 中验证 PKCS#7 证书

    需要一些有关 Java 加密例程的帮助 给定 PKCS 7 签名 我想根据受信任的存储验证它包含的所有证书 我假设签名中包含的所有证书都按正确的顺序形成有效的证书路径 或链 等等 以便 最上面 0 是签名证书 下一个 1 是中间证书 用于签
  • 无法安装 RMagick 2.13.1。找不到 MagicWand.h。

    当我尝试安装 rmagick 时 出现以下错误消息 Can t install RMagick 2 13 1 Can t find MagickWand h extconf rb failed Could not create Makefi
  • “清除内存”后小部件不工作

    问题是 在我使用内置任务管理器的清理内存 RAM后 我的小部件停止工作 我想这与任务管理器清理RAM的方法有关 经过大量研究和尝试 我发现我需要 BroadcastReciever 用于监听包的更改和更新 所以我实现了 但它不起作用 因为文
  • JQgrid - 在搜索选项中转义“:”(值部分)

    这里解释了如何设置过滤器的值链接文本 我有两个要求 1 默认值需要为空 我预计 如果未设置 defaultValue 则过滤器为空 但在我的情况下不会发生这种情况 2 如何转义我的值中的 字符 和 用于分隔索引和值 但是 在我的值字符串中
  • Ace Editor - 更改 CTRL+H 键绑定

    I m working on an implementation of Ace Editor and Ctrl F works great for the built in Find dialog however I m trying to
  • Android Studio:构建 APK 与运行 APK 之间的大小差异

    我注意到使用这两个选项生成的 apk 的大小存在差异 为什么会发生这种情况 随着构建 gt 构建 APK option MyProject app build outputs apk app debug apk 大小 2 997 KB 随着
  • 将 ActionView::Helpers::FormBuilder 传递给部分

    我正在尝试根据特定的 AJAX 请求动态创建表单元素 这是我的设置 View div div 控制器 def check unique id student Student new this form ActionView Helpers
  • Nginx反向代理导致无限循环

    我的 Nginx 站点配置文件中有以下内容 server listen 80 default server listen 80 default server ipv6only on root usr share nginx html ind
  • 如何为 SPA 创建普通 JS 路由?

    我正在创建一个没有框架 工具 库的网络应用程序 所有的都是 Vanilla JS 我的做法更像是 React 风格 我想调用视图 pages dashboard js 中的视图 显示该视图并在用户单击仪表板导航链接时更改 URL 这是导航栏
  • 模块 X 的元数据版本不匹配错误发现版本 4,预期版本 3,解析符号 Y

    我正在尝试使用 angular cli 构建 Angular 4 应用程序 ng build 并使用 ngx clipboard 几天前我突然开始收到以下错误 即使我的应用程序源代码没有更改 ERROR in Metadata versio
  • 使用 Browserify 将 JQuery Mobile 包含在 Node JS 项目中

    我正在编写一个 Node JS 应用程序 我需要 jQuery UI 和 jQuery Mobile 我正在使用 Browserify 将模块打包在一个 js 文件中 我有以下代码将 jQuery 和 jQuery UI 包含在我的项目中
  • Android - 停止线程的最佳且安全的方法

    我想知道在 Android 中停止线程的最佳方法是什么 我知道我可以使用AsyncTask代替它并且有一个cancel 方法 我必须使用Thread在我的情况下 这是我的使用方式Thread Runnable runnable new Ru