原因,3以上对访问 网咯安全提高,不能在主线程 直接访问 网路
解决1
new Thread(){
@Override
public void run()
{
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://www.baidu.com/");
try
{
HttpResponse response = httpClient.execute(httpGet);
}
catch(Exception e)
{
System.out.println("<-------Exception------->");
e.printStackTrace();
}
}
}.start();
2 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
super.onCreate(savedInstanceState);
分享到:
相关推荐
完整源码,示意了NetworkOnMainThreadException产生位置,及两种修改方法; 根源就是android不允许主线程进行费时的网络IO; 关联博文 http://blog.csdn.net/do_script/article/details/28658475
在Android开发中,`Caused by: android.os.NetworkOnMainThreadException` 是一个常见的错误,它意味着开发者尝试在主线程(UI线程)中执行网络操作,这是被禁止的。自Android 4.0 (API Level 14)以后,为了保证用户...
在Android开发中,"NetworkOnMainThreadException"是一个常见的运行时异常,它表示应用程序尝试在网络主线程上执行网络操作。这是由于Android系统为了提高用户体验和防止应用无响应(ANR)情况的发生,从Android 3.0...
android.os.NetworkOnMainThreadException 解决事情应该优先解决一件事情,总是三心二意,最后塞翁失马 文章目录android.os.NetworkOnMainThreadException问题分析查阅资料解决方案知识要点: RunOnUiThread 和 new...
本文将深入探讨如何处理“android.os.NetworkOnMainThreadException”这一常见的异常,该异常通常发生在尝试在网络主线程上执行网络操作时。理解这个问题并找到解决方案对于优化应用性能和提升用户体验至关重要。 ...
而在Android 3.0及以上版本,如果在主线程中进行网络操作,`StrictMode`会抛出`NetworkOnMainThreadException`异常。因此,为了使应用在不同版本上都能正常运行,我们需要对代码进行兼容性处理。 首先,我们需要...
- 不要在非UI线程中直接更新UI,否则会导致`android.os.NetworkOnMainThreadException`等错误。 - 使用`Looper.quit()`或`Looper.quitSafely()`可以结束`Looper`的消息循环,但需谨慎操作,因为这可能会影响到其他...
- Android系统出于安全考虑,从Android 6.0开始,网络访问必须在主线程之外进行,否则会导致“NetworkOnMainThreadException”异常。 - 使用AndroidManifest.xml中的标签添加INTERNET权限,否则应用无法进行网络请求...
- 要确保在UI线程中创建和显示`AlertDialog`,否则可能会引发`NetworkOnMainThreadException`。 - 为了避免内存泄漏,记得在适当的时候调用`dismiss()`方法关闭对话框,特别是在Activity被销毁时。 总的来说,`...
8. **Handler/Looper**: 如果需要在定时任务完成后更新UI,可能需要使用`Handler`和`Looper`来处理消息队列,保证UI更新在主线程中进行,避免出现`NetworkOnMainThreadException`。 9. **SharedPreferences**: 可能...
自Android 2.3(API级别9)以来,所有网络操作必须在非UI线程中执行,以避免阻塞用户界面,导致"NetworkOnMainThreadException"错误。这篇文章探讨了如何利用Java的多线程和线程间通信技术来设计一个高效、低耦合的...
1. **UI线程不能被阻塞**:所有与UI相关的操作必须在UI线程中执行,否则会抛出`android.os.NetworkOnMainThreadException`等异常。为了避免阻塞UI线程,长耗时的操作如网络请求、数据库操作应放在子线程中执行。 2. ...
Android系统规定,网络操作不能在主线程中执行,否则会触发"NetworkOnMainThreadException"异常。因此,我们需要在子线程(如AsyncTask)中处理网络请求。当从服务器获取JSON数据时,通常会使用HttpURLConnection或...
值得注意的是,Android应用进行网络操作时,必须在主线程之外执行,否则会抛出`NetworkOnMainThreadException`异常。因此,实际的Socket通信通常会在子线程或者AsyncTask中进行。 此外,Android应用还需要在`...
在Android平台上,Socket通信需要处理的细节更多,因为Android系统对网络访问有一定的限制,比如需要在主线程外执行网络操作,否则会触发`NetworkOnMainThreadException`。此外,Android应用通常需要在Manifest文件...
在Android中,进行网络操作需要在主线程之外执行,否则可能会引发`NetworkOnMainThreadException`。通常,我们会使用AsyncTask或其他异步处理机制来处理网络请求。 6. **发送数据**:`PrintWriter`是用于向Socket...
例如,当一个服务或者后台线程需要更新UI时,它可以通过`Handler`将更新操作的消息发送到UI线程,确保不会抛出`android.os.NetworkOnMainThreadException`等异常。 7. **生命周期管理**: 当不再需要使用`Handler`...
在 Android 中,所有的网络操作必须在非 UI 线程中执行,否则会触发 `NetworkOnMainThreadException`。因此,我们通常使用 `AsyncTask`、`Thread` 或 `Handler` 来处理网络请求,或者使用现代的网络库如 Retrofit、...