Java Android:Asyctask异常问题

Java Android:Asyctask异常问题,java,android,multithreading,exception,user-interface,Java,Android,Multithreading,Exception,User Interface,我正在编写我的第一个asyctask类,但最终出现了异常 我的asyctask类(内部类) 我得到了一个例外 08-16 16:22:54.167: ERROR/AndroidRuntime(714): FATAL EXCEPTION: AsyncTask #1 08-16 16:22:54.167: ERROR/AndroidRuntime(714): java.lang.RuntimeException: An error occured while executing doInBackgr

我正在编写我的第一个asyctask类,但最终出现了异常

我的asyctask类(内部类)

我得到了一个例外

08-16 16:22:54.167: ERROR/AndroidRuntime(714): FATAL EXCEPTION: AsyncTask #1
08-16 16:22:54.167: ERROR/AndroidRuntime(714): java.lang.RuntimeException: An error occured while executing doInBackground()
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at java.lang.Thread.run(Thread.java:1019)
08-16 16:22:54.167: ERROR/AndroidRuntime(714): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at android.os.Handler.<init>(Handler.java:121)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at android.app.Activity.<init>(Activity.java:680)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at a.b.Login2.<init>(Login2.java:40)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at a.b.validateuser.logOut(validateuser.java:127)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at a.b.homepage$LogoutUser.doInBackground(homepage.java:450)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at a.b.homepage$LogoutUser.doInBackground(homepage.java:1)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
08-16 16:22:54.167: ERROR/AndroidRuntime(714):     ... 4 more
08-16 16:22:54.167:错误/AndroidRuntime(714):致命异常:AsyncTask#1
08-16 16:22:54.167:错误/AndroidRuntime(714):java.lang.RuntimeException:执行doInBackground()时出错
08-16 16:22:54.167:ERROR/AndroidRuntime(714):在android.os.AsyncTask$3.done(AsyncTask.java:200)
08-16 16:22:54.167:ERROR/AndroidRuntime(714):在java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
08-16 16:22:54.167:ERROR/AndroidRuntime(714):在java.util.concurrent.FutureTask.setException(FutureTask.java:125)
08-16 16:22:54.167:ERROR/AndroidRuntime(714):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
08-16 16:22:54.167:ERROR/AndroidRuntime(714):在java.util.concurrent.FutureTask.run(FutureTask.java:138)
08-16:22:54.167:ERROR/AndroidRuntime(714):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
08-16 16:22:54.167:ERROR/AndroidRuntime(714):位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
08-16:22:54.167:ERROR/AndroidRuntime(714):在java.lang.Thread.run(Thread.java:1019)处
08-16 16:22:54.167:错误/AndroidRuntime(714):原因:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
08-16:22:54.167:ERROR/AndroidRuntime(714):在android.os.Handler.(Handler.java:121)
08-16 16:22:54.167:ERROR/AndroidRuntime(714):在android.app.Activity(Activity.java:680)上
08-16:22:54.167:ERROR/AndroidRuntime(714):在a.b.Login2.(Login2.java:40)
08-16:22:54.167:ERROR/AndroidRuntime(714):在a.b.validateuser.logOut(validateuser.java:127)
08-16 16:22:54.167:ERROR/AndroidRuntime(714):在a.b.homepage$LogoutUser.doInBackground(homepage.java:450)
08-16:22:54.167:ERROR/AndroidRuntime(714):在a.b.homepage$LogoutUser.doInBackground(homepage.java:1)
08-16 16:22:54.167:ERROR/AndroidRuntime(714):在android.os.AsyncTask$2.call(AsyncTask.java:185)
08-16 16:22:54.167:ERROR/AndroidRuntime(714):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
08-16 16:22:54.167:错误/AndroidRuntime(714):。。。4更多
官方文件不符合我的要求,我开始写我的文件,但最后例外。请看看你是否能帮忙


提前感谢。

我认为您正在Asyntask中更新应用程序的某些UI,如果是,请将其删除

loginscreen.setFlags(0x04000000);//this flag kills the Activity, before starting another, so dialog //is cancelled already
                startActivity(loginscreen);
                dialog.cancel();//this could be a problem line
因此,请删除
dialog.cancel()

另一种可能性是

logoutuser.logOut();    

上面的这一行可能会启动另一个线程,如果您正在这样做,请避免。找到其他方法。

注销用户任务不涉及任何UI内容,只调用web服务注销。它响了吗?validateuser.logOut(validateuser.java:127)参考这一行validateuser的第127行谢谢,但它不起作用。我用下面的答案解决了这个问题。
loginscreen.setFlags(0x04000000);//this flag kills the Activity, before starting another, so dialog //is cancelled already
                startActivity(loginscreen);
                dialog.cancel();//this could be a problem line
logoutuser.logOut();