您的位置:首页 > 移动开发 > Android开发

Android 文件上传,解决NetworkOnMainThreadException问题!

2013-12-01 19:58 330 查看
大家都知道,android上传文件是需要模拟表单网页表单。

在此先不说模拟表单的事。

今天终于也是遇到这个问题了。下面先介绍问题由来:

NetworkOnMainThreadException,对于这个拼凑起来的句子一样的单词,大家肯定是可以猜出大概意思,就是 主线程中网络访问异常。

为什么主线程中访问网络会有异常捏?

大概是从android-9之后吧,有一个关于主ui进程中不能访问网络以防造成ui加载阻塞,大概就是这样。

解决方法:

方法一:(亲测成功)

申明,

把以下两块代码写到您的Oncreate(){ }中,也可以只写第一个。

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());

方法二:()
启用新线程,
java中的线程大家都会用,在此不说,在android中有一个handler的东西也很好用:

Activity..

private Handler handler;

OnCreate(..){

.....

handler=new Handler();
handler.post(runnable);
}//end of OnCreate()

Runnable runnable=new Runnable() {

public void run() {
Log.i(TAG, "runnable run");
uploadFile(file);
handler.postDelayed(runnable, 5000);
}

};

原本一个简单的上传文件,如果不知道有这么一档子事又会耽误很多功夫,所以做应用也不是一个简单的工作,当各种情况都能独立通过文档解决的时候,才是精通!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐