Android中java线程的暂停与恢复
2017-03-09 16:35
344 查看
在Android中有时我们会遇到类似这样的问题,我要绘制一个曲线图,但是我想让它可以被暂停和继续。首先,绘图肯定得用到多线程的知识。java的Thread类中自带suspend和resume两个方法来实现线程的暂停和恢复,可惜的是,现在已经不被建议使用了,而且,就算你用了,也没什么卵用,根本没效果,哈哈(这就很尴尬了!)
网上查了不少资料(在这里感谢网上一些博客的指导了),经过修改,哈,保证绝对可以用。废话不多说,先贴代码:
如上代码所示,我们使用一个锁对象来实现线程的等待和继续运行,这里需要注意,使用myThread.wait()是不行的,不信可试试。还有就是onPause()方法一定只能在run方法里面执行,不然就变成让主线程等待了。
怎么启动?这个应该很简单吧,我们在别的类中执行:
暂停的话,只需执行:
恢复线程运行:
网上查了不少资料(在这里感谢网上一些博客的指导了),经过修改,哈,保证绝对可以用。废话不多说,先贴代码:
private class MyThread extends Thread { private final Object lock = new Object(); private boolean pause = false; /** * 调用这个方法实现暂停线程 */ void pauseThread() { pause = true; } /** * 调用这个方法实现恢复线程的运行 */ void resumeThread() { pause = false; synchronized (lock) { lock.notifyAll(); } } /** * 注意:这个方法只能在run方法里调用,不然会阻塞主线程,导致页面无响应 */ void onPause() { synchronized (lock) { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } @Override public void run() { super.run(); try { int index = 0; while (true) { // 让线程处于暂停等待状态 while (pause) { onPause(); } try { System.out.println(index); Thread.sleep(50); ++index; } catch (InterruptedException e) { //捕获到异常之后,执行break跳出循环 break; } } } catch (NullPointerException e) { e.printStackTrace(); } } }
如上代码所示,我们使用一个锁对象来实现线程的等待和继续运行,这里需要注意,使用myThread.wait()是不行的,不信可试试。还有就是onPause()方法一定只能在run方法里面执行,不然就变成让主线程等待了。
怎么启动?这个应该很简单吧,我们在别的类中执行:
MyThread my = new MyThread(); Thread thread = new Thread(my); thread.start();
暂停的话,只需执行:
pauseThread();
恢复线程运行:
resumeThread();
相关文章推荐
- Android中的java层的线程暂停和恢复实现
- Android中的java层的线程暂停和恢复实现
- Java/Android倒计时(开始,暂停,恢复,停止)
- java线程的暂停和恢复 suspend 和resume
- Android处理线程暂停与恢复
- java线程停止、暂停和恢复等状态的控制
- java多线程suspend、resume暂停与恢复线程
- 2010-05-23 14:48 Java(6)线程暂停、恢复
- java线程(暂停、恢复、结束)前引
- java线程暂停与恢复suspend和resume
- java线程停止、暂停和恢复等状态的控制
- Android Java 线程暂停与继续
- Android中可以暂停和恢复的线程
- Java线程优先级和线程暂停恢复的问题
- android轻量框架__JAVA 线程
- android通过线程回调java方法
- 【Android Training - 01】详解Activity生命周期 [ Lesson 2 - 暂停与恢复Activity ]
- Android training 管理Activity生命周期之暂停/恢复Activity(Pausing and Resuming an Activity)
- Android Training - 暂停和恢复一个Activity
- java 线程的暂停与开始