[英]how to call asynctask from call which extends Service
如何从可运行调用Asynctask。 在我的课堂上,我正在扩展Service,所以我不知道这是什么问题。 Log cat的输出就像
05-02 11:44:40.914: E/AndroidRuntime(1997): FATAL EXCEPTION: main
05-02 11:44:40.914: E/AndroidRuntime(1997):
android.view.WindowManager$BadTokenException: Unable to add window -- token null is
not for an application
05-02 11:44:40.914: E/AndroidRuntime(1997): at
android.view.ViewRootImpl.setView(ViewRootImpl.java:571)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:246)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
android.app.Dialog.show(Dialog.java:281)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
com.example.sebi.BroadcastService$SaveProducts.onPreExecute(BroadcastService.java:55)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
android.os.AsyncTask.execute(AsyncTask.java:534)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
com.example.sebi.BroadcastService$1.run(BroadcastService.java:39)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
android.os.Handler.handleCallback(Handler.java:725)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
android.os.Handler.dispatchMessage(Handler.java:92)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
android.os.Looper.loop(Looper.java:137)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
android.app.ActivityThread.main(ActivityThread.java:5039)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
java.lang.reflect.Method.invokeNative(Native Method)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
java.lang.reflect.Method.invoke(Method.java:511)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-02 11:44:40.914: E/AndroidRuntime(1997): at
dalvik.system.NativeStart.main(Native Method)
当我尝试使用runOnUiThread时,在runOnUiThread上出现错误。
The method runOnUiThread(new Runnable(){}) is undefined for the type new
Runnable(){}
码:
private Runnable sendUpdatesToUI = new Runnable() {
public void run() {
runOnUiThread(new Runnable(){
public void run(){
new SaveProducts().execute();
handler.postDelayed(this, 30000); // 10 seconds
}
});
}
};
class SaveProducts extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new
ProgressDialog(BroadcastService.this);
pDialog.setMessage("loading.");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
您只能显示带有活动上下文的对话框。 使用服务上下文将不起作用。
只需从异步任务中删除进度对话框即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.