解决android程序中出现android.os.NetworkOnMainThreadException
今天在写了一个android小程序,结果在我的虚拟机中运行得好好的,结果下到平板中,居然运行出错,显示:android.os.NetworkOnMainThreadException。后来,百度了一下,发现原来是我建的工程是android 2.3的, 而我的平板是android4.0的,所以会出现上述错误!正确解决方法:在 public void onCreate(Bundle
·
今天在写了一个android小程序,结果在我的虚拟机中运行得好好的,结果下到平板中,居然运行出错,显示:
android.os.NetworkOnMainThreadException 。
后来,百度了一下,发现原来是我建的工程是android 2.3的, 而我的平板是android4.0的,所以会出现上述错误!
正确解决方法:
在 public void onCreate(Bundle savedInstanceState) {}
中加入
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build());
即上述变为:
public void onCreate(Bundle savedInstanceState)
{
/*
* 以下一段为android3.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()
.penaltyLog()
.penaltyDeath()
.build());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
.......
}
然后,加入时肯定会报错的,因为没有引入头文件,引入头文件后,保存代码。
问题又来了,保存时没错,但是我点运行时,程序又报错了,说我源文件代码有错,接着在
public void onCreate(Bundle savedInstanceState)
{
/*
* 以下一段为android3.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()
.penaltyLog()
.penaltyDeath()
.build());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
.......
}
上加入 @SuppressLint({ "NewApi", "NewApi", "NewApi", "NewApi", "NewApi" })后,
即
@SuppressLint({ "NewApi", "NewApi", "NewApi", "NewApi", "NewApi" })
public void onCreate(Bundle savedInstanceState)
{
/*
* 以下一段为android3.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()
.penaltyLog()
.penaltyDeath()
.build());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
.......
}
程序终于OK了
更多推荐
已为社区贡献3条内容
所有评论(0)