• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

微博开发2客户端的BaseTask以及BaseTaskPool

php 搞代码 4年前 (2022-01-23) 38次浏览 已收录 0个评论
  因为微博程序中客户端与服务器端的数据传递有时会耗时很长,所以采用多进程异步处理,就是界面UI与数据的发送接收不在一个进程里。每次数据传输的时候会开一个新的线程。    BaseTask就是这个记录异步任务属性的类package com.app.demos.base;public class BaseTask {	public static final int TASK_COMPLETE = 0;   //任务完成	public static final int NETWORK_ERROR = 1;   //网络错误	public static final int SHOW_LOADBAR = 2;    //显示下载条	public static final int HIDE_LOADBAR = 3;    //不显示下载条	public static final int SHOW_TOAST = 4;      //显示Toast	public static final int LOAD_IMAGE = 5;      //加载图片		private int id = 0;	private String name = "";		public BaseTask() {}		public int getId () {		return this.id;	}		public void setId (int id) {		this.id = id;	}		public String getName () {		return this.name;	}		public void setName (String name) {		this.name = name;	}		public void onStart () {	}		public void onComplete () {	}		public void onComplete (String httpResult) {	}		public void one rror (String error) {	}		public void onStop () throws Exception {	}	}

下面就是BaseTaskPool,任务池的相关代码。

package com.app.demos.base;import java.util.HashMap;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import android.content.Context;import com.app.demos.util.HttpUtil;import com.app.demos.util.AppClient;public class BaseTaskPool {		// task thread pool	static private ExecutorService taskPool;		// for HttpUtil.getNetType	private Context context;		public BaseTaskPool (BaseUi ui) {                       //初始建立缓冲池		this.context = ui.getContext();		taskPool = Executors.newCachedThreadPool();	}	根据不同的需求重载了addTask方法三次	// http post task with params	public void addTask (int taskId, String taskUrl, HashMap taskArgs, BaseTask baseTask, int delayTime) {		baseTask.setId(taskId);		try {			taskPool.execute(new TaskThread(context, taskUrl, taskArgs, baseTask, delayTime));		} catch (Exception e) {			taskPool.shutdown();		}	}		// http post task without params	public void addTask (int taskId, String taskUrl, BaseTask baseTask, int delayTime) {		baseTask.setId(taskId);		try {			taskPool.execute(new TaskThread(context, taskUrl, null, baseTask, delayTime));		} catch (Exception e) {			taskPool.shutdown();		}	}		// custom task	public void addTask (int taskId, BaseTask baseTask, int delayTime) {		baseTask.setId(taskId);		try {			taskPool.execute(new TaskThread(context, null, null, baseTask, delayTime));		} catch (Exception e) {			taskPool.shutdown();		}	}	异步创建任务进程	// task thread logic	private class TaskThread implements Runnable {		private Context context;		private String taskUrl;		private HashMap taskArgs;		private BaseTask baseTask;		private int delayTime = 0;		public TaskThread(Context context, String taskUrl, HashMap taskArgs, BaseTask baseTask, int delayTime) {			this.context = context;			this.taskUrl = taskUrl;			this.taskArgs = taskArgs;			this.baseTask = baseTask;			this.delayTime = delayTime;		}		@Override		public void run() {			try {				baseTask.onStart();				String httpResult = null;				// set delay time				if (this.delayTime > 0) {					Thread.sleep(this.delayTime);				}				try {					// remote task					if (this.taskUrl != null) {						// init app client						AppClient client = new AppClient(this.taskUrl); // 用到了上一讲的AppClient封装了基本的http 的post与get方法						if (HttpUtil.WAP_INT == HttpUtil.getNetType(context)) {							client.useWap();						}						// http get						if (taskArgs == null) {							httpResult = client.get();						// http post						} else {							httpResult = client.post(this.taskArgs);						}					}					// remote task本2文来*源gao($daima.com搞@代@#码(网搞gaodaima代码					if (httpResult != null) {						baseTask.onComplete(httpResult);					// local task					} else {						baseTask.onComplete();					}				} catch (Exception e) {					baseTask.onError(e.getMessage());				}			} catch (Exception e) {				e.printStackTrace();			} finally {				try {					baseTask.onStop();				} catch (Exception e) {					e.printStackTrace();				}			}		}	}	}

以上就介绍了微博开发2客户端的BaseTask以及BaseTaskPool,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:微博开发2客户端的BaseTask以及BaseTaskPool
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址