真是问题不断,在Android3.1平台上开发时,通过自定义Application类,在其中的onCreate方法中初始化了一个网络连接,可恶的是发生了android.os.NetworkOnMainThreadException
的错误。
借助网络的力量,得知在3.0平台上由于对网络的限制比较严格,无法之间初期。不得不在网络初期之前加了一段代码。
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();
//.....初始化网络连接
详细说明,参考http://android.yyable.com/reference/android/os/StrictMode.html
分享到:
相关推荐
在Android开发中,`Caused by: android.os.NetworkOnMainThreadException` 是一个常见的错误,它意味着开发者尝试在主线程(UI线程)中执行网络操作,这是被禁止的。自Android 4.0 (API Level 14)以后,为了保证用户...
通常,Android程序默认在一个主线程(UI线程)中运行,如果一个任务执行时间过长,会导致主线程阻塞,使得用户界面无响应,影响程序的流畅性。为了解决这个问题,开发者需要采用多线程技术。 多线程允许程序同时...
这意味着,如果你在子线程中尝试修改任何UI元素,如文本、图片或者布局,系统会抛出`android.os.NetworkOnMainThreadException`异常,提示你在子线程中进行了网络操作或者UI更新。因此,要在子线程中更新主线程的...
在Android开发中,`AlertDialog`是一个非常重要的组件,它用于显示一些警告、确认或提示性的信息给用户。这个`alertDialog.zip`文件很可能是包含了某个Android应用中关于`AlertDialog`使用的源码示例,供开发者学习...
例如,当一个服务或者后台线程需要更新UI时,它可以通过`Handler`将更新操作的消息发送到UI线程,确保不会抛出`android.os.NetworkOnMainThreadException`等异常。 7. **生命周期管理**: 当不再需要使用`Handler`...
任何对UI的操作都必须在这个线程中进行,否则会抛出`android.os.NetworkOnMainThreadException`等异常。因此,当需要执行网络请求、数据库操作或大计算量的任务时,我们需要在其他线程(非UI线程)中执行。 接着,...
但这里有一个问题,Android不允许在非主线程中直接修改UI,因此这段代码会抛出`android.os.NetworkOnMainThreadException`异常,导致程序崩溃。 正确的做法是使用Handler来处理子线程与主线程的通信。Handler通常...
本文将详细讲解如何在Android中实现动态添加View,并通过一个名为`DynamicAddViewDemo`的示例项目进行说明。 一、动态添加View的基本原理 在Android中,我们通常使用XML来定义布局,但在某些场景下,如创建可变数量...
如果在其他线程中修改UI元素,会抛出`android.os.NetworkOnMainThreadException`异常。因此,我们需要使用异步处理或者Handler、Runnable、AsyncTask等工具来处理后台任务,然后在主线程中更新UI。 1. **Handler和...
- 在处理用户交互(如点击按钮)时,通常需要在UI线程中进行,否则可能会抛出`android.os.NetworkOnMainThreadException`异常。 - 如果需要在视频播放完成后执行某些操作,可以监听`OnCompletionListener`事件。 ...
本篇文章将指导你如何在Android应用中创建一个TCP客户端,并在UI线程与工作线程之间安全地进行数据交互。 首先,由于Android系统规定,网络操作不能在主线程(UI线程)中执行,否则会触发`...
3. 使用`AsyncTask`更新UI时,确保操作是在主线程进行的,否则会抛出`android.os.NetworkOnMainThreadException`异常。 总之,`AsyncTask`在实现简单、快速的多线程任务时非常方便,但需注意其生命周期和资源管理,...
5. **LiveData和ViewModel**(Android架构组件):LiveData是一个观察者模式的实现,它可以自动在正确的线程中更新观察者,而ViewModel则负责在Activity重建时保持数据。这两者结合,可在非UI线程中处理数据,然后...
- 避免在`doInBackground()`中直接操作UI,否则会抛出`android.os.NetworkOnMainThreadException`。 - `AsyncTask`不是线程安全的,不推荐在多个实例之间共享。 6. **替代方案** 虽然`AsyncTask`简单易用,但在...