0

我有一个 LogCat 错误,但我不明白。该应用程序运行良好,但随后随机发生。我尝试将 adMob 添加到我的应用程序中,然后出现此错误,因此我删除了 add mob 的所有内容,但仍然收到此错误!这是什么意思?

09-30 22:05:33.299: E/AndroidRuntime(30293): FATAL EXCEPTION: main
09-30 22:05:33.299: E/AndroidRuntime(30293): android.os.NetworkOnMainThreadException
09-30 22:05:33.299: E/AndroidRuntime(30293):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1178)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at java.net.InetAddress.lookupHostByName(InetAddress.java:394)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:245)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at java.net.InetAddress.getAllByName(InetAddress.java:220)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:590)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:510)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:488)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at library.JSONParser.getJSONFromUrl(JSONParser.java:42)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at library.UserFunctions.loginUser(UserFunctions.java:54)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at com.example.LoginActivity$1.onClick(LoginActivity.java:52)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at android.view.View.performClick(View.java:3549)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at android.view.View$PerformClick.run(View.java:14393)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at android.os.Handler.handleCallback(Handler.java:605)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at android.os.Handler.dispatchMessage(Handler.java:92)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at android.os.Looper.loop(Looper.java:154)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at android.app.ActivityThread.main(ActivityThread.java:4945)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at java.lang.reflect.Method.invokeNative(Native Method)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at java.lang.reflect.Method.invoke(Method.java:511)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-30 22:05:33.299: E/AndroidRuntime(30293):    at dalvik.system.NativeStart.main(Native Method)
4

1 回答 1

1

例外是 NetworkOnMainThread,这意味着它所说的:您正在主线程上运行代码,但您正在尝试执行网络操作。看起来你正在做一些与 HTTP 相关的事情,做一些 JSON 配对,并试图查找主机名。

虽然我们经常觉得某个应用程序正在运行然后随机停止,但我们所做的某些事情导致了问题发生随机位腐烂,但我们应该首先排除其他来源。

您说您尝试将 adMob 添加到您的应用程序中。这几乎不是“随机发生的”。您“删除了 adMob 的内容”,但您是否也删除了代码?您是否有可以比较的应用程序的先前版本?您是否更改了 Android 平台版本?

出现您的错误是因为不再允许应用在主线程(又名 UI 线程)上执行网络操作。网络内容必须作为异步操作在后台运行。为此,您可以使用 AsyncTask 或 IntentService,也可以编写自己的后台 HandlerThread/Handler/Looper。我的猜测是添加 adMob 会将一些网络代码放入您的应用程序中;我无法想象 adMob 可以在没有网络访问的情况下工作。

于 2013-10-01T02:15:45.073 回答