今天用doGet方法调用阿里云条码查询商品接口,从用zxing扫码到调用接口都没问题,数据也成功获取下来,但是过了一会儿系统就崩溃了,看了下debug的原因: java.lang.Throwable: Explicit termination method 'close' not called
我也不知道是哪里没有close出现了这种错误,然后开始百度,百度很多说是因为
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
于是乎经过测试好像不是这样的问题,知道急不来,终于找到了根结所在
httpClient.getConnectionManager().shutdown();
归根结底在于封装的方法里面没有这一句,这是今天的问题
前两天也有个问题困扰了我很久
就是TabHost下子Activity不响应onActivityResult的问题
经过长时间的和百度的沟通,解决方法如下:
首先需要在父Activity下调用onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 获取当前活动的Activity实例
Activity subActivity = activityManager.getCurrentActivity();
//判断是否实现返回值接口
if (subActivity instanceof OnTabActivityResultListener) {
//获取返回值接口实例
OnTabActivityResultListener listener = (OnTabActivityResultListener) subActivity;
//转发请求到子Activity
listener.onTabActivityResult(requestCode, resultCode, data);
}
super.onActivityResult(requestCode, resultCode, data);
}
并且创建一个接口
/**
* 解决子Activity无法接收Activity回调的问题
* @author Administrator
*
*/
public interface OnTabActivityResultListener {
public void onTabActivityResult(int requestCode, int resultCode, Intent data);
}
通过父Activity把响应传给子Activity
@Override
public void onTabActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
}
}
这样问题就解决了,需要注意的是调用的时候需要
getParent().getcurrentActivity().startActivityForResult(intent, requestCode)
就是通过父Activity来启动,具体情况具体写,逻辑是这么个逻辑