上次说到的是andbase的一些简单概念 和怎么添加到项目中,那这次 我就开始说内容了,这次内容说的是andbase 线程池。
怎么添加andbase.jar我就不多说了,前面有提到过。废话不多说 上代码了
package com.example.andbasetest;
import com.ab.task.AbTaskItem;
import com.ab.task.AbTaskListener;
import com.ab.task.AbTaskPool;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
private AbTaskPool abTaskPool; //这是andbase 自带线程池
private AbTaskItem abTaskItem; //这是 线程池里面的某一项 线程要执行的对象
private String contentString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
abTaskPool= AbTaskPool.getInstance(); //这里是通过 getInstance()方法 拿到 线程池的对象的
}
public void getData(){ //假设这是个 你要获取数据的方法
//你可以在这之前 加一些 正在 加载的动画 提示 等等
abTaskItem=new AbTaskItem(); //new 一个 线程池 要执行的对象 也就是线程池中的 一个item
abTaskItem.listener=new AbTaskListener(){ //加入监听 那么 重点 就是监听里面的两个方法了
@Override
public void get() {
super.get();
//get方法 就是 进行一些 获取数据 或者是 联网等耗时的 操作 这是 子线程中执行
//例如 我执行个 网络请求
TASyncHttpClient client = new TASyncHttpClient();
client.setTimeout(5000);//网络请求超时 时间 5s
RequestParams params = new RequestParams();
params.put("planevent", json); //json 网络请求的参数
contentString = client.post(urlModel.getSavePlanURL(), params);//url 就是你要请求的路径 加上参数 获取返回的结果 contentString
HttpResponseStatus.httpCode = client.getResponseCode(); //
}
@Override
public void update() {
super.update();
//update 方法 就是 主线程 那么在这个线程里面 我们 可以刷新界面 进行提示
//加入你获取到了数据 那么进行相应的操作了
if(contentString !=null&&contentString.equals("")){
//可以去除加载动画 加入提示信息 将你获取的 字符串 json 解析 后 用于显示 或者 其他操作
}
}else{
//提示 失败 或者是 网络连接失败 等等
}
};
abTaskPool.execute(abTaskItem);//这句 就是让线程池 去执行这个子线程 千万别忘了这句。。应为我就会忘记写这句。
}
}
稍微总结下,这个说的还是比较简单。但是 有没有感觉 这个东西 比较方便呢。反正 我是感觉很方便了。就是应为 它把 主线程 和 子线程 分的非常清楚 所以 也是能加快我们的编码速度的。额 这章就说到这了。