Android 我怎样才能把吐司放在一个可运行的服务中?
我有一个包含计时器和TimerTask的服务,用于在一段时间内从Webservice接收数据。除了吐司,一切都很好。我想在procSendMapMovements中向用户敬酒,但我得到一个异常。我怎么用吐司呢Android 我怎样才能把吐司放在一个可运行的服务中?,android,service,toast,runnable,Android,Service,Toast,Runnable,我有一个包含计时器和TimerTask的服务,用于在一段时间内从Webservice接收数据。除了吐司,一切都很好。我想在procSendMapMovements中向用户敬酒,但我得到一个异常。我怎么用吐司呢 class taskSendMapMovements extends TimerTask { @Override public void run() { hhSendMapMovements.sendEmptyMessage(0);
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;
}
创建一个处理程序以显示toast 使用以下内容: 要显示toast call的位置:
//printToast.sendEmptyMessage();//If you dont want to send no paramter
//if you want to send some object to handler
/*
Message msg=printToast.obtainMessage();
msg.obj=objToSent;
printToast.sendMessage(msg);
*/
final Handler printToast= new Handler(new Callback() {
@Override
public boolean handleMessage(Message msg) {
Toast.makeText....;
}
});
**
**java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序,如果没有Toast,则我的进程将完全按照//my process完成
Handler printToast= new Handler(new Callback() {
@Override
public boolean handleMessage(Message msg) {
Toast.makeText....;
}
});
your Runnable
{
run()
{
do what ever you want
printToast.sendMessage(printToast.obtainMessage());
}
}