サブスレッド(別名ワーカースレッド)の複数; andorid過程で少なくともスレッドがあり、一般的には、メインスレッド(また、UIスレッド)があります。
セキュリティ上の理由から、サブスレッドを動的にメインスレッドでコンポーネントの属性値を変更することはできません:アンドロイドでのルールがあります。
しかし、いくつかの時間のかかる操作を実行するために、子スレッドを置く彼らはしばしば、メインスレッドは、UIを更新するために終了しますので、ハンドリング機構ハンドラメッセージがあります。
ハンドラは子スレッドのsendMessage()法などにより、転写ステーションと同等であるので、メインスレッド更新子スレッドを達成するために、メインスレッドに応じて送信され、関連するメッセージのハンドラを処理し、オブジェクト・ハンドラにメッセージを送信します。
次の書き込みデモ:
1.レイアウト、TextViewのとボタン、ボタンクリックリアライズ効果のTextViewの子スレッドの値の変化。示すよう
2.MainActivity(パケットハンドラOSをインポートすることに留意されたい)に
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textView= (TextView) findViewById(R.id.text);
Button button= (Button) findViewById(R.id.button);
final Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==123){
textView.setText("sb");
}
}
};
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
handler.sendEmptyMessage(123);
}
}).start();
}
});
}