安卓开发解决android.os.NetworkOnMainThreadException异常方法
2013-01-07 14:01:04| 分类: 技术 | 标签:安卓 技术 java |举报|字号 订阅
在android 2.3上访问网络的方法,在android 4.0上运行时报android.os.NetworkOnMainThreadException异常,主要问题在于4.0中访问网络不能在主线程中进行,有两个方法可以解决。
第一种是在主线程中增加如下代码[不推荐]:
// 详见StrictMode文档 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());
第二种方法是启动异步线程执行[推荐]:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 启动线程执行下载任务 new Thread(downloadRun).start(); }
/**
* 下载线程
*/
Runnable downloadRun = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
updateListView();
}
};
或者您也可以直接让业务方法实现Runnable接口,然后用 new Thread(您的方法名).start()来启动。
时间: 2024-08-02 02:39:40