wangkuifeng0 2010-10-12
最近做的一个程序,由于在启动的时候需要在后台初始化比较多的内容,为了让用户不等待很久的时间,准备展示一个启动画面,在后台的线程里完成初始化以后通知前台的主线程销毁掉启动画面进行后续的工作~
首先,我们需要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里面绘制主界面即可