編輯:關於Android編程
在android開發中,如果在一個線程中想更新主界面中控件顯示的數據,直接給主界面控件賦值就會出現異常,android中為了安全起見,是不允許在線程中更新界面控件的數據,遇到這種情況,我們可以使用Handler. Handler就是處理界面和線程間的消息傳遞,通信的組件。下面我們演示下handler處理詳細的兩種辦法,下面的這個列子通過點擊不同按鈕展現handler.post和handler.sendmsg兩個傳遞消息的方法。

創建一個handler對象和Runnable對象,通過handler.post(new Runnable(){});處理來更新界面中的textview的數據
這個例子中,我們創建一個employee員工類,單擊按鈕的時候,顯示員工的信息,通過handler.sendmessage來傳遞消息和參數進行處理
package com.example.helloword;
import android.R.string;
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.SimpleAdapter;
import android.widget.TextView;
public class HandlerActivity extends Activity {
private TextView tv;
private Button btnpost;
private Button btnmsg;
private Handler handler=new Handler();//post處理handler
//sendmsg處理handler
private Handler handlerTwo=new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
tv.setText(姓名:+((employee)msg.obj).name);
break;
}
}
};
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.handlerlayout);
tv=(TextView)findViewById(R.id.textViewMsg);
btnpost=(Button)findViewById(R.id.btnpost);
btnmsg=(Button)findViewById(R.id.btnmsg);
btnpost.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Thread thread=new Thread(new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub
handler.post(runOne);
}
}
);
thread.start();
}
});
btnmsg.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Thread thread=new Thread(new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub
Message msg=new Message();
msg.arg1=1;
employee employeeone=new employee();
employeeone.name=員工1;
employeeone.age=20;
msg.obj=employeeone;
msg.what=0;
handlerTwo.sendMessage(msg);
}
}
);
thread.start();
}
});
}
Runnable runOne=new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
tv.setText(正在執行handler post);
}
};
public class employee
{
public String name;
public int age;
}
}
??
四大組件之Service(四)-Service的線程、工作線程、權限及系統Service
第5節 Service的線程和工作線程剛開始使用Service的時候,常常會有一個誤區:認為這個Service運行於應用中一個單獨的線程。其實Service組件和其他組件
微信朋友圈熱文在哪 微信朋友圈熱文怎麼看
新版的微信裡,細心的朋友應該能看到在搜索那裡多出了一個功能:朋友圈熱文。隨時了解朋友圈的熱門文章,不過有不少人都很疑惑微信朋友圈熱文要怎麼查看,下面就讓小編
Android學習筆記之ListView的簡單使用
(1) (2) package com.example.listview1; import java.util.ArrayList; im
Android中不得不談的setContentView
寫在前面:幾個月之前在做項目的布局優化時,使用 Hierarchy Viewer 查看項目的層級結構,然後發現頂層的布局並不是在XML中我寫的根布局,而是嵌套了多層 La