標籤:read androi prot 線程 over 愛國 get current div
1.介面布局,以及組件初始化:
組件初始化:
private Button button; private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)findViewById(R.id.button); button.setOnClickListener(new ButtonListener()); handler=new FirstHandler(); }
2.訊息佇列的使用:
class ButtonListener implements View.OnClickListener{ //設定監聽器,使得每點一次按鈕產生一次訊息 @Override public void onClick(View view) { Message msg=handler.obtainMessage(); msg.what=8; //msg的其中一個參數,可以設定很多msg的參數 handler.sendMessage(msg); //把訊息扔出去 } } class FirstHandler extends Handler{ @Override public void handleMessage(Message msg) { //處理訊息,傳一個訊息體進來,理解為一個對象,可以是字串,int型之類的 int what=msg.what; System.out.println("資料what是:"+what); super.handleMessage(msg); } }
3.通過訊息佇列來修改主線程的文字:
class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { System.out.println("這是來自MyHandler的資訊:"+Thread.currentThread().getName()); String s=(String)msg.obj; textview.setText(s); super.handleMessage(msg); }} class ButtonListener implements View.OnClickListener{ @Override public void onClick(View view) { Thread thread=new NetWorkThread(); thread.start(); } } class NetWorkThread extends Thread{ @Override public void run() { System.out.println("來自NetWorkThread的資訊:"+Thread.currentThread().getName()); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } String s="有理想的愛國青年"; Message msg=handler.obtainMessage(); msg.obj=s; handler.sendMessage(msg); super.run(); } }
2017.12.18 Android開發之訊息佇列(實現子線程修改UI組件)