我有一個具有不同活動的android應用程序,它們都從Web源中提取數據。這是通過實現Runnable並創建一個活動作爲對象的線程來完成的。基本類是這樣的:從不同線程調用相同的對話框
public ActivityX extends Activity implements Runnable {
@Override
public onResume() {
super.onResume();
Thread someThread = new Thread(this);
someThread.start();
}
@Override
public run() {
try {
// pull web content
}
catch(TimeOutException e) {
// >>> create dialog here <<<
// go back to another activity
}
}
}
我試圖創建一個返回超時對話框的靜態方法的對話框輔助類,然後調用show()這樣的:
HelperClass.getTimeOutDialog().show();
但問題是,我不能從run()方法內部調用它,因爲它在不同的線程中。如果我嘗試,我會得到一個運行時異常聲明:
不能()內螺紋已不叫Looper.prepare
我需要將近一打這樣做對話框創建處理程序活動,我真的想要解決使用Handler對象並每次發送消息來調用對話框。有沒有更簡單的方法來做到這一點?不幸的是我現在無法想到任何權利。
我的代碼看起來是這樣的:
handler.handleEmptyMessage(1);
這是調用處理程序。而下面的就處理了該消息:
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if(msg.what == 1) {
// show dialog here
}
}
};
乾杯
這樣好多了。 runnable可以在HelperMethod中生成,然後該行看起來像_runOnUiThread(HelperClass.getTimeoutRunnable(this)); _ – Viciouss