我有一個服務,它包含一個Timer和TimerTask,用於在一段時間內從Webservice接收數據。除了吐司之外,一切正常。我想在procSendMapMovements中向用戶展示Toast,但我得到異常。我如何在其中使用吐司?如何將Toast放入服務的Runnable中?
class taskSendMapMovements extends TimerTask {
@Override
public void run() {
hhSendMapMovements.sendEmptyMessage(0);
}
};
// /////////////////////
final Runnable rSendMapMovements = new Runnable()
{
public void run()
{
procSendMapMovements();
}
};
final Handler hhSendMapMovements = new Handler(new Callback() {
@Override
public boolean handleMessage(Message msg) {
performOnBackgroundThread(rSendMapMovements);
return false;
}
});
// /////////////////////
public void procSendMapMovements() {
try {
Toast.makeText(SrvDataExchange.this,
"some texts"
Toast.LENGTH_SHORT).show();
// exception here
// my process
} catch (Exception e) {
}
}
@Override
public void onStart(Intent intent, int startId) {
try {
timerSendMapMovements = new Timer();
timerSendMapMovements
.schedule(new taskSendMapMovements(),
10*60*1000,
10*60*1000);
//
} catch (NumberFormatException e) {
Toast.makeText(this, "error running service: " + e.getMessage(),
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(this, "error running service: " + e.getMessage(),
Toast.LENGTH_SHORT).show();
}
}
public static Thread performOnBackgroundThread(final Runnable runnable) {
final Thread t = new Thread() {
@Override
public void run() {
try {
runnable.run();
} finally {
}
}
};
t.start();
return t;
}
你有什麼異常? – 2012-01-07 11:47:08
java.lang.RuntimeException:無法在沒有調用Looper.prepare() – breceivemail 2012-01-07 11:50:03
而沒有Toast的線程中創建處理程序我的進程完全按照線程完成//我的進程 – breceivemail 2012-01-07 11:54:00