【问题标题】:Android: Asyctask exception issueAndroid:Asyctask 异常问题
【发布时间】:2011-08-16 10:57:19
【问题描述】:

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

我的 asyctask 类(内部类)

        private class LogoutUser extends AsyncTask<Double, Void, Void>{

        @Override
        protected Void doInBackground(Double... params) {
            validateuser logoutuser = new validateuser();
            logoutuser.logOut();    
            return null;
        }

它叫的地方

logout.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                ProgressDialog dialog = new ProgressDialog(homepage.this);
                dialog.setMessage("Loading...");

                dialog.show();
                //validateuser logoutuser = new validateuser();
                //logoutuser.logOut();
                new LogoutUser().execute(10.00, 10.00);

                Intent loginscreen = new Intent(homepage.this, Login2.class);
                loginscreen.setFlags(0x04000000);
                startActivity(loginscreen);
                dialog.cancel();


            }
        });

我遇到了异常

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

官方文档不符合我的要求,我开始写我的,结果出现异常。请看看你能不能帮忙。

提前致谢。

【问题讨论】:

    标签: java android multithreading exception user-interface


    【解决方案1】:

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

    【讨论】:

    • 注销用户任务不涉及任何 UI 内容,仅调用 Web 服务注销。它会响铃吗?
    • validateuser.logOut(validateuser.java:127) 参考这一行 validateuser's 127th line
    【解决方案2】:
    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();    
    

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

    【讨论】:

    • 谢谢,但没用。我通过以下答案解决了问题。
    猜你喜欢
    • 2022-12-06
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 2016-06-27
    相关资源
    最近更新 更多