-
一个关于Android程序退出后,线程停止的问题10
在Android的程序中,UI线程是主线程
理论上来讲,Activity调用了finish方法后,主线程就终止了
那么其上的子线程也应该是停止
但是通过测试,发现并不是这样
finish退出程序后,子线程还在后台跑
必须用DDMS停止该线程才行
那么如何在程序退出时,停止所有开启的子线程呢?
我想到了两个方案:
一,在退出时,改变线程内循环的标识符
while(isRun){...}
将isRun置为false,则打破了循环,线程终止
二,不采用while(isRun){...}这样的循环方式
而利用Android提供的Handler机制来完成//将一个线程立即加入线程队列,并执行它的[color=red]run[/color]方法 handler.post(test); Runnable test = new Runnable(){ public void run(){ //以上代码略 //延迟1000毫秒,执行这个线程的[color=red]run[/color]方法 handler.postDelayed(test,1000); } } //退出时 //即从线程队列中移除该线程,不再被执行 handler.removeCallbacks(test);
如红字标注,确实是调用的run方法,所以其实并未真正的启动一个子线程
以上是我想到的两个方案,不知对不对
请大家来探讨一下
问题补充
原来我的理解不对
楼上兄台能否指点一二
在下感激不尽
问题补充
原来如此
谢谢指教2011年6月17日 09:17
8个答案 按时间排序 按投票排序
-
可以用HandlerThread,将它的Looper给handler就可以,具体用法如下:
HandlerThread handlerThread=new HandlerThread("threadTag");
handlerThread.start();
Handler handler=new Handler(handlerThread.getLooper());
handler.post(test);
这样test不会阻塞ui线程
在activity的onDestroy()方法中handler.removeCallbacks(test)2011年6月21日 16:03
-
调用android.os.Process.killProcess(android.os.Process.myPid())这个会杀死进程!
2011年6月17日 09:17
-
activity finish之后,子线程还是会运行,除非你在destory是显示将标志位置为false,还有一种情况,当系统内存吃紧,系统回收掉你的线程。
2011年6月17日 09:17
-
系统已经很好的封装了一些类,是你没有太注意吧。
HandlerThread
Looper.myLooper().quit()
Thread.join()
自己去查查,就能解决线程的安全退出。
当然,某个耗时的任务,还是得用标志之类的办法让他中途停下来。2011年6月17日 09:17
-
引用Activity调用了finish方法后,主线程就终止了
这个说法是不对的。
引用那么其上的子线程也应该是停止
这个说法也不对。即使主线程终止,非deamon的子线程也不会终止。
2011年6月17日 09:17
相关推荐
易语言正确退出线程源码,正确退出线程,多线程,正常结束线程,提示信息,发送消息
关于线程的动态停止 启动一个或n个线程 动态的卖票。经过一段时间后停止 停止的时间由自己或程序动态给出
在多线程编程这块,我们经常要使用...HandlerThread顾名思义就是可以处理消息循环的线程,他是一个拥有Looper的线程,可以处理消息循环。 与其说Handler和一个线程绑定,不如说Handler是和Looper一一对应的。 Handl
线程开启,暂停,恢复,退出操作简易实现demo
Android程序技术:线程管理.pptx
用pyqt5设计了一个主窗体,在窗体运行时需要把一个无限循环放在一个线程去工作。运行后,发现通过鼠标按主窗体的关闭按键关闭主创体后,线程不会自动终止,依然在运行。尽管对我的使用场景来说,这不是问题,因为...
一个多线程示例程序及多线程常见问题介绍。实例程序,带有源码,直接可用,c++builder的精彩编程!!
Android线程结束——合理的结束你想结束的线程
android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序
易语言多线程多次启动一个子程序源码,多线程多次启动一个子程序,循环
Android用线程实现ImageView图片变换+可以停止和继续
android多线程机制教程 android多线程机制 android多线程机制 android多线程机制
mfc安全退出线程mfc安全退出线程mfc安全退出线程mfc安全退出线程mfc安全退出线程
1. 编写程序,使用两个线程,一个队列, 其中一个线程从键盘读取数据,放入到队列中,直到读取的数据是字符串quit则结束,线程的任务就是循环读取数据直到特定的字符串quit。另外一个线程,不断的从队列中读取数据...
Android----线程实现图片移动 , 运用线程实现图片的水平循环往返移动!
支持多线程,有进度条和百分比显示,退出后台下载,重新进去后组件同步下载!
Android中AsyncTask实现多线程计数,UI主线程运行,启动另一个线程计数并在UI主线程上显示.
4.线程:UI thread通常就是main thread,而Android启动程序时会替它建立一个Message Queue。 每一个线程里可含有一个Looper对象以及一个MessageQueue数据结构。在你的应用程序里,可以定义Handler的子类别来接收...
线程实现的Android访问网络资源,适用于Android4.0以上的Android开发.zip
java程序(利用线程)。一个线程往成绩单中写入课程名和成绩,一个线程从成绩单中读出课程和成绩,并将课程和成绩显示在屏幕上。