Android使用Thread的interrupt与sleep,重启或暂停线程任务
来源:互联网 发布:淘宝客佣金比例怎么算 编辑:程序博客网 时间:2024/06/05 11:36
Android使用Thread的interrupt与sleep,重启或暂停线程任务
本文给出一个例子,简单说明如何在Android诸如Activity中,重启或者暂停一个正在无限运作的线程。
需求描述:假设在Android的Activity中,有一个线程,永不停息的运作,若当前Activity处于用户可见状态时候,每隔一秒输出一个自增长的计数器值,但是当Activity处于用户不可见时候,暂停线程输出,即中断线程执行。
实现这一机制的关键点简言之,借助Thread的sleep,让sleep在一定条件下(比如一个状态机布尔值)休眠一个极大值Long.MAX_VALUE。然后在Android的Activity生命周期回调中,重新赋值状态机布尔值,同时使用Thread的interrupt方法,打断当前处于休眠状态的线程,使之重新恢复正常运转。
代码如下:
package zhangphil.thread;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;public class MainActivity extends AppCompatActivity { private String TAG = "输出"; private int count = 0; private boolean RUN = true; private LongTimeWork mThread = new LongTimeWork(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mThread.start(); } private class LongTimeWork extends Thread { @Override public void run() { while (true) { try { if (!RUN) { Thread.sleep(Long.MAX_VALUE); } } catch (Exception e) { e.printStackTrace(); } count++; Log.d(TAG, count + ""); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } @Override protected void onResume() { super.onResume(); RUN = true; mThread.interrupt(); } @Override protected void onPause() { super.onPause(); RUN = false; }}
阅读全文
2 0
- Android使用Thread的interrupt与sleep,重启或暂停线程任务
- Android使用Thread的interrupt与sleep,重启或暂停线程任务
- Java线程生命周期及其使用,sleep与interrupt的使用,wait与notify
- java线程研究---(4)暂停Thread:sleep
- 线程中sleep 与interrupt方法的应用
- Thread 的sleep、wait、yield、interrupt
- Thread 的sleep、wait、yield、interrupt
- 线程 中断 Thread.interrupt()使用
- 线程 Thread 的 Interrupt 和 isInterrupted 打断线程的使用。
- Thread.interrupt()的使用
- Android AsynTask 与Thread 或线程池 使用分析
- java 线程的interrupt和sleep、wait
- VC如何对新创建的一个线程暂停或重启
- Thread interrupt() 方法的使用
- Android Thread interrupt 中断JAVA线程
- Android Thread interrupt 中断JAVA线程
- JAVA或C#中Thread.Sleep()的使用
- Thread 常搞混的几个概念sleep、wait、yield、interrupt
- Qt生成文件依赖打包
- 算法模板——后缀数组
- js组件-bootstrap table 客户端分页与搜索总结
- 获取免费的代理ip
- iOS
- Android使用Thread的interrupt与sleep,重启或暂停线程任务
- IE8兼容canvas和一些CSS3属性
- python根据函数进行列表排序
- MySQL数据库学习07-查询数据:聚合函数
- 我们物联网专业的嵌入式实习-day04(开发智能家居系统-结构体、文件IO与进程)
- 随便乱扯:关于区块链中的几个概念
- Git-Windows64-2.15.0下载
- 微信上的投票怎样刷票之网络微信投票怎么刷票及微信投票快速刷票的方法
- Go实战--golang中使用echo和MySQL搭建api(labstack/echo、go-sql-driver/mysql)