note. UI control is available only in main thread(UI thread).
1. create handler in main thread
import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; public class main extends Activity { public Handler _handler = new Handler() { @Override public void handleMessage(Message msg) { // where the main activity thread receives messages // do what we want showMyDialog(); super.handleMessage(msg); } }; public void showMyDialog() { //show ui } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //... } }
2. use Message in other work thread
//in another thread public void sendMessageToShowDialog() { //-------------------------- //call showMyDialog() directly will cause exception because here is not in ui thread. //m_parents.showMyDialog(); //------------------------- //----------------------------- //send message to show dialog Message msg = Message.obtain(); //User-defined message code msg.what = 999; m_parents._handler.sendMessage(msg); //------------------------------ }
沒有留言:
張貼留言