致命异常AsyncTask#1和Android doInBackground()

致命异常AsyncTask#1和Android doInBackground(),第1张

概述早上好,StackOverFlow专家,我需要一点帮助.我正在运行一个Android应用程序,该应用程序通过php脚本调出MySql数据库,当我运行该应用程序时,我收到AsyncTask#1的致命异常错误,该错误是由空指针异常引起的.它说这是在执行doInBackground时发生的.这是MyBringBack提供的教程.我真的需

早上好,StackOver Flow专家,

我需要一点帮助.我正在运行一个Android应用程序,该应用程序通过PHP脚本调出MysqL数据库,当我运行该应用程序时,我收到AsyncTask#1的致命异常错误,该错误是由空指针异常引起的.它说这是在执行doInBackground时发生的.这是MyBringBack提供的教程.我真的需要为此解决问题,因为我已经尝试了好几天了.如果我删除/注释大多数Log.d语句,它将运行良好,但是我看不到JsON响应中发生了什么的标记,下面列出了代码,有人可以帮我解决这个问题或告诉我什么吗代码有误.

这是来自logcat的错误日志

10-25 09:27:47.818: E/JsON Parser(1041): Error parsing data org.Json.JsONException: Value array(2) of type java.lang.String cannot be converted to JsONObject
10-25 09:27:47.818: W/dalvikvm(1041): threadID=11: thread exiting with uncaught exception (group=0xb1b06ba8)
10-25 09:27:47.828: E/AndroIDRuntime(1041): FATAL EXCEPTION: AsyncTask #1
10-25 09:27:47.828: E/AndroIDRuntime(1041): Process: com.bobcatservice, PID: 1041
10-25 09:27:47.828: E/AndroIDRuntime(1041): java.lang.RuntimeException: An error occured while executing doInBackground()
10-25 09:27:47.828: E/AndroIDRuntime(1041): at androID.os.AsyncTask$3.done(AsyncTask.java:300)
10-25 09:27:47.828: E/AndroIDRuntime(1041): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
10-25 09:27:47.828: E/AndroIDRuntime(1041): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
10-25 09:27:47.828: E/AndroIDRuntime(1041): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
10-25 09:27:47.828: E/AndroIDRuntime(1041): at androID.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
10-25 09:27:47.828: E/AndroIDRuntime(1041): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
10-25 09:27:47.828: E/AndroIDRuntime(1041): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
10-25 09:27:47.828: E/AndroIDRuntime(1041): at java.lang.Thread.run(Thread.java:841)
10-25 09:27:47.828: E/AndroIDRuntime(1041): Caused by: java.lang.NullPointerException
10-25 09:27:47.828: E/AndroIDRuntime(1041): at com.bobcatservice.Login$AttemptLogin.doInBackground(Login.java:126)
10-25 09:27:47.828: E/AndroIDRuntime(1041): at com.bobcatservice.Login$AttemptLogin.doInBackground(Login.java:1)
10-25 09:27:47.828: E/AndroIDRuntime(1041): at androID.os.AsyncTask$2.call(AsyncTask.java:288)
10-25 09:27:47.828: E/AndroIDRuntime(1041): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-25 09:27:47.828: E/AndroIDRuntime(1041): … 4 more
10-25 09:27:49.968: E/WindowManager(1041): androID.vIEw.WindowLeaked: Activity com.bobcatservice.Login has leaked window com.androID.internal.policy.impl.PhoneWindow$DecorVIEw{b1e8e430 V.E….. R……D 0,0-684,192} that was originally added here
10-25 09:27:49.968: E/WindowManager(1041): at androID.vIEw.VIEwRootImpl.(VIEwRootImpl.java:348)
10-25 09:27:49.968: E/WindowManager(1041): at androID.vIEw.WindowManagerGlobal.addVIEw(WindowManagerGlobal.java:248)
10-25 09:27:49.968: E/WindowManager(1041): at androID.vIEw.WindowManagerImpl.addVIEw(WindowManagerImpl.java:69)
10-25 09:27:49.968: E/WindowManager(1041): at androID.app.Dialog.show(Dialog.java:286)

这是有问题的代码

//AsyncTask is a seperate thread than the thread that runs the GUI//Any type of networking should be done with asynctask.class AttemptLogin extends AsyncTask<String, String, String> {     /**    * Before starting background thread Show Progress Dialog    * */    boolean failure = false;   @OverrIDe   protected voID onPreExecute() {       super.onPreExecute();       pDialog = new ProgressDialog(Login.this);       pDialog.setMessage("Attempting login...");       pDialog.setIndeterminate(false);       pDialog.setCancelable(true);       pDialog.show();   }    @OverrIDe    protected String doInBackground(String... args) {        // Todo auto-generated method stub         // Check for success tag       int success;       String username = user.getText().toString();       String password = pass.getText().toString();           // Building Parameters           List<nameValuePair> params = new ArrayList<nameValuePair>();           params.add(new BasicnameValuePair("username", username));           params.add(new BasicnameValuePair("password", password));           Log.d("request!", "starting");           // getting product details by making http request           JsONObject Json = JsonParser.makehttpRequest(                  LOGIN_URL, "POST", params);           try {           // check your log for Json response           Log.d("Login attempt", Json.toString());           // Json success tag           success = Json.getInt(TAG_SUCCESS);           if (success == 1) {            Log.d("Login Successful!", Json.toString());            Intent i = new Intent(Login.this, Welcome.class);            finish();            startActivity(i);            return Json.getString(TAG_MESSAGE);            }else{            Log.d("Login Failure!", Json.getString(TAG_MESSAGE));            return Json.getString(TAG_MESSAGE);           }        } catch (JsONException e) {           e.printstacktrace();       }       return null;    }    /**    * After completing background task dismiss the progress dialog    * **/   protected voID onPostExecute(String file_url) {       // dismiss the dialog once product deleted       pDialog.dismiss();       if (file_url != null){        Toast.makeText(Login.this, file_url, Toast.LENGTH_LONG).show();       }   }}

}

解决方法:

If I remove/comment most of the Log.d statements it will run fine

看来我们可以在doInBackground()方法的某些日志调用中找到问题.这个如何?

Log.d("request!", "starting");

不,看起来不错.那下一个呢?

Log.d("Login attempt", Json.toString());

啊哈!我们如何获得这个Json变量?

JsONObject Json = JsonParser.makehttpRequest(LOGIN_URL, "POST", params);

检查您的http请求的结果,您可能在这里得到null.

如果Json不为空怎么办?好吧,我们还有另一个可疑的日志调用:

Log.d("Login Failure!", Json.getString(TAG_MESSAGE));

据我所记得,如果Log.d()的第二个参数为null,则您将得到NullPointerException,因此也请检查此参数.

如果这也不是问题怎么办?好吧,我建议您在这里use debugger.

总结

以上是内存溢出为你收集整理的致命异常AsyncTask#1和Android doInBackground()全部内容,希望文章能够帮你解决致命异常AsyncTask#1和Android doInBackground()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1088187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存