Androidマルチスレッドの簡単な例
最近作ったプログラムでは、起動時にバックグラウンドで比較的多くのコンテンツを初期化する必要があるため、ユーザーが長時間待たないように起動画面を表示する準備をし、バックグラウンドのスレッドで初期化を完了した後、フロントのメインラインピンに起動画面を破壊して後続の作業を行うように通知します~
まず、newのThreadを必要とし、runメソッドを実装し、バックグラウンドで行う比較的長い操作を追加するとともに、messageを作成し、その属性を定義し、バックグラウンド操作が完了した後、メッセージを他のスレッドに送信し、関連する操作を実行させる必要があります.
バックグラウンドスレッドが完了し、メッセージが正常に送信されると、このactivityにメッセージプロセッサを定義して、このメッセージを処理する必要があります.処理されたswitch文の判断条件は、メッセージを送信するmsgです.what
このようにプログラムはloadmainの中でメインインタフェースを描くことができます
まず、newのThreadを必要とし、runメソッドを実装し、バックグラウンドで行う比較的長い操作を追加するとともに、messageを作成し、その属性を定義し、バックグラウンド操作が完了した後、メッセージを他のスレッドに送信し、関連する操作を実行させる必要があります.
public class MainView extends Activity
{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.load); //display loading picture
new Thread() {
public void run() {
Message m = new Message();
m.what = MainView.GUI_STOP_NOTIFIER;
//some initialization
//......
//......
MainView.this.myMessageHandler.sendMessage(m);
}
}.start();
}
}
バックグラウンドスレッドが完了し、メッセージが正常に送信されると、このactivityにメッセージプロセッサを定義して、このメッセージを処理する必要があります.処理されたswitch文の判断条件は、メッセージを送信するmsgです.what
Handler myMessageHandler = new Handler() {
// @Override
public void handleMessage(Message msg) {
switch (msg.what) {
/* */
case MainView.GUI_STOP_NOTIFIER:
loadmain();
Thread.currentThread().interrupt();
break;
case MainView.GUI_THREADING_NOTIFIER:
if (!Thread.currentThread().isInterrupted()) {
}
break;
}
super.handleMessage(msg);
}
}
このようにプログラムはloadmainの中でメインインタフェースを描くことができます