请求网络接口出错:android.os.NetworkOnMainThreadException Android 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想说的是public String GetJSonData() { new Thread(new Runnable() { @Override public void run() { //访问本地,查看缓存文件是否存在 if(isExist(dirString,filenameString)){ /*查询本地的方法体*/ datastr=GetJsonCache(); } else { datastr=GetJsonHTTP(); } } }).run(); return datastr; }这个函数写得有问题,你确定return datastr;会是你想要的吗?还有看下GetJsonHTTP()函数是否有在其他地方调用UI线程里面 //获得Json数据字符串 public String GetJSonData() { new Thread(new Runnable() { @Override public void run() { //访问本地,查看缓存文件是否存在 if(isExist(dirString,filenameString)){ /*查询本地的方法体*/ datastr=GetJsonCache(); } else { datastr=GetJsonHTTP(); } } }).start(); return datastr; }把run改成start但是你这个函数GetJSonData还是有问题的,返回的是null,因为子线程还在执行,datastr还没有来得及被赋值,GetJSonData函数已经返回了。 public String GetJSonData() { new Thread(new Runnable() { @Override public void run() { // 访问本地,查看缓存文件是否存在 if (isExist(dirString, filenameString)) { /* 查询本地的方法体 */ datastr = GetJsonCache(); handler.sendMessage(handler.obtainMessage(xxx,datastr)); } else { datastr = GetJsonHTTP(); handler.sendMessage(handler.obtainMessage(xxx,datastr)); } } }).start(); } 在这个类上声明了这个String变量,如果没有数据或者出错,返回给我的是个空字符串,在handler接收里进行了判断,如果是空字符串的话,就不更新ui 在这个类上声明了这个String变量,如果没有数据或者出错,返回给我的是个空字符串,在handler接收里进行了判断,如果是空字符串的话,就不更新uirun改成start后还报错吗? run改成start后还报错吗?原因我已经找到了,原因是run要改成start 还有部分原因是因为在我的程序中,我错误的在调用层也使用了一个线程嵌套导致的。 100分讨论android的动态widget 是在原生的android系统上的, Android小程序(新手) 公司让自己写个项目策划书, ddms调试错误 ListView的ViewHolder,还是被重复调用,代码如下,望各位支招 android怎样实现边下载边播放视频 Tab显示不出东西 Android 矢量图的绘制 Gmail 发送邮件 关于Android camera后台运行的问题 adb shell 中am start问题求教,请进!! 新手,Android打开SQLite问题
public String GetJSonData() {
new Thread(new Runnable() {
@Override
public void run() {
//访问本地,查看缓存文件是否存在
if(isExist(dirString,filenameString)){
/*查询本地的方法体*/
datastr=GetJsonCache();
}
else {
datastr=GetJsonHTTP();
}
}
}).run();
return datastr;
}
这个函数写得有问题,你确定return datastr;会是你想要的吗?还有看下GetJsonHTTP()函数是否有在其他地方调用UI线程里面
public String GetJSonData() {
new Thread(new Runnable() {
@Override
public void run() {
//访问本地,查看缓存文件是否存在
if(isExist(dirString,filenameString)){
/*查询本地的方法体*/
datastr=GetJsonCache();
}
else {
datastr=GetJsonHTTP();
}
}
}).start();
return datastr;
}把run改成start
但是你这个函数GetJSonData还是有问题的,返回的是null,因为子线程还在执行,datastr还没有来得及被赋值,GetJSonData函数已经返回了。
new Thread(new Runnable() {
@Override
public void run() {
// 访问本地,查看缓存文件是否存在
if (isExist(dirString, filenameString)) {
/* 查询本地的方法体 */
datastr = GetJsonCache();
handler.sendMessage(handler.obtainMessage(xxx,datastr));
} else {
datastr = GetJsonHTTP();
handler.sendMessage(handler.obtainMessage(xxx,datastr));
}
}
}).start();
}
在这个类上声明了这个String变量,如果没有数据或者出错,返回给我的是个空字符串,在handler接收里进行了判断,如果是空字符串的话,就不更新ui
在这个类上声明了这个String变量,如果没有数据或者出错,返回给我的是个空字符串,在handler接收里进行了判断,如果是空字符串的话,就不更新ui
run改成start后还报错吗?
原因我已经找到了,原因是run要改成start 还有部分原因是因为在我的程序中,我错误的在调用层也使用了一个线程嵌套导致的。