2

我的 Ice Cream Sandwich (Android 4.0) 设备和模拟器出现此错误。但该应用程序可以在 Android 2.3 模拟器上完美运行。

06-19 00:34:38.357:E/AndroidRuntime(535):致命异常:主要
06-19 00:34:38.357: E/AndroidRuntime(535): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.kickinglettuce.rate_this/com.kickinglettuce.rate_this.Main}: java.lang.NullPointerException
06-19 00:34:38.357: E/AndroidRuntime(535): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 android.app.ActivityThread.access$600(ActivityThread.java:123)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 android.os.Handler.dispatchMessage(Handler.java:99)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 android.os.Looper.loop(Looper.java:137)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 android.app.ActivityThread.main(ActivityThread.java:4424)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 java.lang.reflect.Method.invokeNative(Native Method)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 java.lang.reflect.Method.invoke(Method.java:511)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-19 00:34:38.357: E/AndroidRuntime(535): at dalvik.system.NativeStart.main(Native Method)
06-19 00:34:38.357:E/AndroidRuntime(535):由:java.lang.NullPointerException 引起
06-19 00:34:38.357: E/AndroidRuntime(535): 在 org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 org.json.JSONTokener.nextValue(JSONTokener.java:94)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 org.json.JSONArray.(JSONArray.java:87)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 org.json.JSONArray.(JSONArray.java:103)
06-19 00:34:38.357: E/AndroidRuntime(535): at com.kickinglettuce.rate_this.Main.onCreate(Main.java:81)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 android.app.Activity.performCreate(Activity.java:4465)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-19 00:34:38.357: E/AndroidRuntime(535): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
06-19 00:34:38.357: E/AndroidRuntime(535): ... 11 更多

启动活动几乎与此相同:

http://blog.sptechnolab.com/2011/02/10/android/android-connecting-to-mysql-using-php/

这是我的代码中的空行:
jArray = new JSONArray(result);

4

1 回答 1

2

今天早上我写了一篇关于同一主题的博客文章:

为什么我的应用程序在冰淇淋三明治上崩溃?


您正在执行的原因是因为您正在强制关闭,因为您正在尝试在 UI 线程上建立网络连接。这是一个潜在的昂贵操作,并且可能会阻塞 UI 线程导致延迟。ICS 和 HoneyComb 引入了更严格的检查以防止滥用 UI 线程,现在如果您尝试这样做,则会自动强制关闭您的应用程序。这就是为什么您的应用程序在 Android 4.0 上崩溃但在 Android 2.3 上没有崩溃的原因。您应该在某种单独的线程中执行 HTTP 请求(即普通ThreadAsyncTask)。

阅读上面链接的我的博客文章......它更详细地说明了为什么您应该在单独的工作线程中执行此类操作。您可能还会发现此示例代码有助于您入门。

于 2012-06-19T00:45:24.903 回答