有没有办法在android蜂窝中的主线程上调用网络API调用?

Nan*_*r R 4 api android thread-safety background-process android-3.0-honeycomb

我正在创建一个服务和一个应用程序.App可以调用服务上的方法.该方法调用API并基于API,给出结果.由于该应用程序是针对Android 3.0,我得到"NetworkOnMainThreadException".

我的要求是这样一种方式,我无法从app中调用后台线程中的方法.服务方法也应该返回一个基于API调用的布尔值.

有没有办法在android蜂窝中的主线程上调用网络API调用?

小智 27

import android.os.StrictMode;

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Run Code Online (Sandbox Code Playgroud)

  • 最后有人不讨论垃圾,只是给出了答案..我喜欢你的风格+1来自我:) (9认同)

Com*_*are 7

我正在创建一个服务和一个应用程序.

服务是"app"的一部分.我将假设你的意思是"活动",你写的是"app".

我的要求是这样一种方式,我无法从app中调用后台线程中的方法.

那么创造这个"要求"的人就是白痴,应该被解雇.然后,删除此要求.始终在后台线程上执行网络操作.

由于该应用程序是针对Android 3.0,我得到"NetworkOnMainThreadException".

那是因为StrictMode默认情况下警告你这些事情.虽然警告是新的,但是在您的代码运行的所有Android版本上都存在问题.

有没有办法在android蜂窝中的主线程上调用网络API调用?

这绝不应该在生产代码中完成.修改您的应用程序以在后台线程上执行网络I/O(例如,AsyncTask).