課程
/移動開發
/Android
/Android面試??虷andler詳解
那個stop按鍵不知道為什么要寫,因為沒任何作用。。。。。。。。還有如果我把send連續點擊多次,會出現打印加速了,完全不是按1秒間隔來,而且也不是交替,而是比較隨機。。。。。
2015-08-17
源自:Android面試??虷andler詳解 6-1
正在回答
stop鍵:如果是按老師的代碼寫的。將removeMessage(1)中的“1”改成“0”即可。
原因:
該參數為Message的標識,第一次發送的標識為1;
而后因Message message=new Message();默認參數為0;
以后的Message標識均為0,故remove“0”;
send鍵:再次點擊,會開啟一個新的主線程和子線程通信循環。多個循環打印都在logCat上,自然就混亂隨機了。
knowbie 提問者
Forest_Deer 回復 knowbie 提問者
Listener
case?R.id.btn_stop: ????handler.removeMessages(0); ????handler2.removeMessages(0); ????break;
同時寫兩個就管用. ?我試了這個可以停止.
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()){
public void handleMessage(Message msg) {
Log.d("TAG","in new Thread"+Thread.currentThread());
//往主線程發送消息
mainHandler.sendEmptyMessageDelayed(1,1000);
// super.handleMessage(msg);
}
舉報
學Android開發,必學Handler,也是Android面試常客
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-08-24
stop鍵:如果是按老師的代碼寫的。將removeMessage(1)中的“1”改成“0”即可。
原因:
該參數為Message的標識,第一次發送的標識為1;
而后因Message message=new Message();默認參數為0;
以后的Message標識均為0,故remove“0”;
send鍵:再次點擊,會開啟一個新的主線程和子線程通信循環。多個循環打印都在logCat上,自然就混亂隨機了。
2016-12-09
同時寫兩個就管用. ?我試了這個可以停止.
2015-08-25
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);
}
};
}