GVi*_*i82 8 multithreading android toast android-service
可能重复:
从服务启动的Android Toast仅显示一次
我正在使用android.app.Service中定义的Service Android.
我从一个Activity调用此服务(myService).
我的服务是:
public class myService extends Service{
public IBinder onBind(Intent intent){
return null;
}
public void onCreate(){
super.onCreate();
TimerTask task = new TimerTask(){
public void run(){
Log.i("test","service running");
checkDate();
}
};
timer = new Timer();
timer.schedule(task, 0, 20000);
}
public void checkDate(){
Toast toast = Toast.makeText(this, "SIMPLE MESSAGE!", Toast.LENGTH_LONG);
toast.show();
}
}
Run Code Online (Sandbox Code Playgroud)
checkDate()方法驻留在myService类中.
产生的错误是:
09-19 15:41:35.267: E/AndroidRuntime(2026): FATAL EXCEPTION: Timer-0
09-19 15:41:35.267: E/AndroidRuntime(2026): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
09-19 15:41:35.267: E/AndroidRuntime(2026): at android.os.Handler.<init>(Handler.java:121)
09-19 15:41:35.267: E/AndroidRuntime(2026): at android.widget.Toast$TN.<init>(Toast.java:310)
09-19 15:41:35.267: E/AndroidRuntime(2026): at android.widget.Toast.<init>(Toast.java:84)
09-19 15:41:35.267: E/AndroidRuntime(2026): at android.widget.Toast.makeText(Toast.java:226)
Run Code Online (Sandbox Code Playgroud)
Dav*_*ser 23
TimerTask在一个单独的线程中运行.Toast.makeText()必须从已建立a的线程执行Handler/Looper.基本上这意味着您需要在其中运行标准Android消息/事件调度程序的线程上进行吐司.
最简单的方法是使用您的checkDate()方法:
runOnUiThread(new Runnable() {
public void run() {
Toast toast = Toast.makeText(this, "SIMPLE MESSAGE!", Toast.LENGTH_LONG);
toast.show();
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:我是个白痴,这不对.您不能从服务上下文中调用runOnUiThread()
你需要使用一个处理程序.在您的服务中:
private Handler handler;
Run Code Online (Sandbox Code Playgroud)
在onCreate()你的服务中:
handler = new Handler();
Run Code Online (Sandbox Code Playgroud)
在checkDate()方法中:
handler.post(new Runnable() {
public void run() {
Toast toast = Toast.makeText(myService.this, "SIMPLE MESSAGE!", Toast.LENGTH_LONG);
toast.show();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7561 次 |
| 最近记录: |