我最近将我的应用更新上传到Google Play。在尝试时,我在点击手动添加的横幅时遇到错误(例如,不是AdMob或类似的东西)。单击是设置AsyncTask
,使用POST将数据发送到php脚本。我使用ProGuard,所以当我向自己发送错误报告时,我只能看到导致错误的方法:doInBackground。我也能看到它是NullPointerException
。奇怪的是,当我使用Eclipse从我的计算机上运行我的设备上的应用程序时,错误没有发生,所以我无法找到导致NullPointerException
的行。它在我的应用程序的早期版本中运行良好,我还没有对此代码进行任何更改。当我查看方法doInBackground
时,我无法找到NullPointerException
可能出现的任何地方。
以下是来自我的开发者控制台的错误消息,但这是预先确定的:
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:278)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.NullPointerException
at se.nollekollen.main.d.a(Unknown Source)
at se.nollekollen.main.d.doInBackground(Unknown Source)
at android.os.AsyncTask$2.call(AsyncTask.java:264)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 5 more
这是我的doInBackground:
@Override
protected String doInBackground(String... arg0) {
String url_stats = "http://xxxxx.xx/statistik/sendStatistics_click.php";
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("activity", getClass().getEnclosingClass().getName().substring(20)));
params.add(new BasicNameValuePair("section", SECTION));
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url_stats);
try {
httpPost.setEntity(new UrlEncodedFormEntity(params));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
try {
httpClient.execute(httpPost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
这里唯一可能为null的是#34; SECTION&#34;,但这不会导致NullPointerException
,因为在创建新的BasicNameValuePair(键时,该值可以为null)值)。
任何人都可以找到导致NullPointerException
的原因吗?如果应用程序是从Google Play下载的,而不是从计算机上运行时,这种情况怎么可能发生呢?