刚在做复习时发现了一个问题,加入了Handler的线程,即使调用了removeCallbacks线程还是存在,而且退出了Activity之后线程还在运行。难道是removeCallBacks无效?还是我哪里写错了?


package cfuture09.handlerProgress;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;public class HandlerProgressActivity extends Activity {Button start;ProgressBar progressBar;Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubprogressBar.setProgress(msg.arg1);handler.post(r);}};Runnable r = new Runnable() {int i = 0;@Overridepublic void run() {// TODO Auto-generated method stubSystem.out.println("Begin thread");i += 10;Message msg = handler.obtainMessage();msg.arg1 = i;try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}//if ( i < 100) { handler.sendMessage(msg);//}if ( i >= 100) {handler.removeCallbacks(r);System.out.println("end");}}};    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        start = (Button) findViewById(R.id.start);        progressBar = (ProgressBar) findViewById(R.id.progress);        start.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubprogressBar.setVisibility(ProgressBar.VISIBLE);handler.post(r);}});    }}

  刚和一个同学聊天说到这一段,跟他一说,忽然之间自己想明白了。原来还是代码的逻辑错误。这段代码我是看视频写的,可能视频的作者在写这段代码时也没注意到这个问题。在看了之后的视频我才想明白。聊天记录用图片贴上来吧。


更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. android webview中使用Java调用JavaScript方法并获取返回值
  3. Android 读取元素的数据
  4. 快速实现android手机端多人视频会议直播(免费)
  5. Android中Activity常用功能设置小结(包括全屏、横竖屏等)
  6. android Looper Message 代码分析
  7. Android(安卓)FFmpeg系列——3 C多线程使用
  8. Android源码50例汇总,欢迎各位下载 【转载自51CTO】
  9. 【Android】java.lang.AssertionError use looper thread, must

随机推荐

  1. AsyncTask进度条加载网站数据到ListView
  2. Android中的三种提示方式
  3. Android客制化adb shell进去后显示shell@
  4. Android(安卓)时间更新机制之网络更新时
  5. Android(安卓)BLE蓝牙开发中读取数据时设
  6. Android系统移植-按键移植
  7. Android(安卓)上调试 webkit framework
  8. 2.4 ImageView
  9. android转屏,切换屏幕,横竖屏(onConfigurati
  10. 学Android(安卓)Space控件,只看这篇文章就