我想要做的是在新线程中从MainActivity启动一个程序:
1)进行互联网通话
2)从响应中提取类似布尔值的东西(代表要显示的AlertDialog)
3)在MainActivity中显示正确的(取决于布尔值)AlertDialog
使用Runnable或AsyncTask执行前两个步骤没有问题,但我无法在MainActivity中显示警报
我遵循了不同的指南,但我无法达成解决方案。
解决
我的主要活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHandler=new Handler();
new Thread(new UpdateRunnable(this,mHandler)).start();
/* Other stuff */
}
My Runnable:
public class UpdateRunnable implements Runnable{
private Activity activity;
private Handler mHandler;
private boolean update;
/* Other stuff */
public UpdateRunnable(Activity activity, Handler mHandler){
this.activity = activity;
this.mHandler = mHandler;
/* Other stuff */
}
@Override
public void run() {
// It get from web which Dialog to call
update = update();
// It manage the UI work
mHandler.post(new Runnable() {
public void run() {
if(update){
show_dialog_you_are_not_updated();
} else {
show_dialog_you_are_updated();
}
}
});
}
/* The methods update, show_dialog_you_are_not_updated, show_dialog_you_are_updated */
}