为了账号安全,请及时绑定邮箱和手机立即绑定

发现代码又Bug

那个stop按键不知道为什么要写,因为没任何作用。。。。。。。。还有如果我把send连续点击多次,会出现打印加速了,完全不是按1秒间隔来,而且也不是交替,而是比较随机。。。。。

正在回答

3 回答

stop键:如果是按老师的代码写的。将removeMessage(1)中的“1”改成“0”即可。

原因:

该参数为Message的标识,第一次发送的标识为1;

而后因Message message=new Message();默认参数为0;

以后的Message标识均为0,故remove“0”;

send键:再次点击,会开启一个新的主线程和子线程通信循环。多个循环打印都在logCat上,自然就混乱随机了。

2 回复 有任何疑惑可以回复我~
#1

knowbie 提问者

非常感谢!
2015-08-25 回复 有任何疑惑可以回复我~
#2

knowbie 提问者

试过了改为0没有用。
2015-08-25 回复 有任何疑惑可以回复我~
#3

Forest_Deer 回复 knowbie 提问者

把源码拿出来看看
2015-08-25 回复 有任何疑惑可以回复我~
#4

Listener

感谢解答,改为“0”,亲测有用!
2016-05-23 回复 有任何疑惑可以回复我~
查看1条回复
case R.id.btn_stop:
    handler.removeMessages(0);
    handler2.removeMessages(0);
    break;

同时写两个就管用.  我试了这个可以停止.

0 回复 有任何疑惑可以回复我~

public class MainActivity extends Activity implements OnClickListener{

private HandlerThread thread;

private TextView text;

private Button send;

private Button stop;

//创建主线程的Handler

private Handler mainHandler=new Handler(){

public void handleMessage(android.os.Message msg) {

//往子线程中发送消息

threadHandler.sendEmptyMessageDelayed(1,1000);

Log.e("TAG","in Main Thread"+Thread.currentThread());

};

};

private Handler threadHandler;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

text=(TextView) findViewById(R.id.textView1);

send=(Button) findViewById(R.id.send);

stop=(Button) findViewById(R.id.stop);

send.setOnClickListener(this);

stop.setOnClickListener(this);

thread= new HandlerThread("Handler Thread");

thread.start();

threadHandler=new Handler(thread.getLooper()){

@Override

public void handleMessage(Message msg) {

Log.d("TAG","in new Thread"+Thread.currentThread());

//往主线程发送消息

mainHandler.sendEmptyMessageDelayed(1,1000);

// super.handleMessage(msg);

}

};

}

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android面试常客Handler详解
  • 参与学习       54881    人
  • 解答问题       183    个

学Android开发,必学Handler,也是Android面试常客

进入课程

发现代码又Bug

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信