Android AsyncTack 异步任务实例详解
Android AsyncTack 异步任务这里写一个小实例,来学习巩固Android AsyncTack 异步任务的知识,以便在项目中使用。 介绍一下如何使用 1,继承AsyncTask
我们来说一下这三个泛型的作用: Params: 调用异步任务时传入的类型 ; Progress : 字面意思上说是进度条,实际上就是动态的由子线程向主线程publish数据的类型 Result : 返回结果的类型 2,重写这个类的抽象方法doInBackground,当然它也有几个方法需要重写,我们一一看来
下面三个方法根据具体情况选择使用 text = (TextView) findViewById(R.id.main_text1);
new MyTask().execute(text); text = (TextView) findViewById(R.id.main_text2); new MyTask().execute(text); text = (TextView) findViewById(R.id.main_text3); new MyTask().execute(text); text = (TextView) findViewById(R.id.main_text4); new MyTask().execute(text); 注意: 如果我们直接去execute我们的任务,它(任务) 只会在同一个子线程中运行,所以上述第一种方式启动时,四个任务顺次执行(就是一个任务执行完了再执行另一个); 而第二种方式,给它创建了线程池,这样会自动给它创建新的子线程,所有的任务不是顺序执行,而是几个线程”同时执行” 获取网络数据呈现在Webview和下载图片和其共存的案例1,首先我们要来一个布局,具体需求是这样的,在WebView之上有个ImageView,并且,ImageView可以随WebView滚动,所以这个时候我们想到了用ScrollView,但是大家一定不要忘记,ScrollView只能包含一个控件,所以我们可以用LinearLayout包裹一下即可 2,接下来我们要有一个实体类,用来存放从网页上下载的内容(这里加注解原因在于我们要使用GSON解析来自网页的内容)public String getTitle() {
return title; } ...//省略其余getter和setter方法 public void setImage(String image) { this.image = image; } } 3,那我们接下解决的问题就是 如何下载图片? 如何下载web内容?,那我们写两个通用的工具类下载工具类(通用型) * 通用下载工具类 */ public class NetWorkTaskprivate NetWorkTask.Callback public NetWorkTask(String url,Class
} @Override 图片加载器(通用型){
private ImageView image; public ImageLoader(ImageView image) { @Override } @Override @Override 4,测试Activity注意: 看如何解决大图在webView中不左右滑动的问题! {
private WebView web;
private ImageView image;
//解决大图在webView中不左右滑动的问题
private static final String CSS = "";
private String title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
web = (WebView) findViewById(R.id.main2_web);
image = (ImageView) findViewById(R.id.main2_image);
new NetWorkTask<>("http://www.tngou.net/api/top/show?id=13122",Entry.class).execute(this);
}
@Override
public void onSuccess(Entry t) {
web.loadDataWithBaseURL("",t.getMessage(),"text/html; charset=utf-8","UTF-8",null);
new ImageLoader(image).execute("http://img.blog.csdn.net/20160829134937003");
}
@Override
public void onFailed(Exception e) {
web.loadDataWithBaseURL("","加载失败",null);
}
}
5.效果图:感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |