Handler 在android開發的Activity組件中會經常經常用到,那Handler有什麼用呢?Handler在什麼樣的情況下會用到呢?
現在我來說一下比較常用的一種情況。
一般Activity 一開始會加載主線程,如果頁面上的數據是靜態的,也不用怎麼改變和交互,這種情況下完全用不上Handler。
但是一般的app都離不開網絡數據的動態加載(加載數據後需要更新UI),或者有一些數據交互或點擊事件的觸發(點擊後更新UI),這種情況就需要考慮使用Handler,
Handler 可以把加載的數據或點擊後改變的數據 通過 sendMessage 方法發送到一個消息隊列,然後在消息隊列裏面獲取數據後更新UI見如下代碼用法。
public class MainActivity extends Activity implements OnClickListener{
private Button btn;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button)findViewById(R.id.btn);
handler = new Handler(){
//處理消息隊列中的數據
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
Toast.makeText(MainActivity.this, (String)msg.obj, Toast.LENGTH_LONG).show();
}
};
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Message msg = new Message();
msg.obj = "Hi! I am james!";
handler.sendMessage(msg);//將數據放進消息隊列
}
}