Android中的多线程及AsyncTask的引入,最终入职阿里

简介: Android中的多线程及AsyncTask的引入,最终入职阿里


(1)模拟图片下载的基础Demo


1.主要代码

public class DelayOperator {
//延时操作,用来模拟下载
public void delay()
{
try {
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
public class MyAsyncTask extends AsyncTask
{
private TextView textView;
private ProgressBar progressBar;
public MyAsyncTask(TextView textView,ProgressBar progressBar)
{
super();
this.textView = textView;
this.progressBar = progressBar;
}
//该方法不运行在UI线程中,主要用于异步操作,通过调用publishProgress()方法
//触发onProgressUpdate对UI进行操作
@Override
protected String doInBackground(Integer… params) {
DelayOperator dop = new DelayOperator();
int i ;
for (i = 10;i <= 100;i+=10)
{
//判断是否为取消状态
dop.delay();
publishProgress(i);
}
return i + params[0].intValue() + “”;
}
//该方法运行在UI线程中,可对UI控件进行设置
@Override
protected void onPreExecute() {
textView.setText(“开始执行异步线程~”);
}
//在doBackground方法中,每次调用publishProgress方法都会触发该方法
//运行在UI线程中,可对UI控件进行操作
@Override
protected void onProgressUpdate(Integer… values) {
int value = values[0];
progressBar.setProgress(value);
}
}

2.实现效果

(2)进阶版从网络下载图片的实际应用


1.主要代码

public class ImageAsyncTask extends AsyncTask {
private TextView textView;
private ImageView imageView;
public ImageAsyncTask(TextView textView,ImageView imageView)
{
super();
this.textView = textView;
this.imageView=imageView;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
//页面提示
textView.setText(“下载中…”);
}
@Override
protected Integer doInBackground(String… params) {
//记录成功下载的图片个数
int downloadSuccess = 0;
try {
for (int i = 0; i < params.length; i++) {
//睡眠2秒,制造耗时操作效果
Thread.sleep(2000);
if(isCancelled()){
break;
}
//循环取出可变参数中图片地址


相关文章
|
21天前
|
Android开发
40. 【Android教程】AsyncTask:异步任务
40. 【Android教程】AsyncTask:异步任务
21 2
|
11天前
|
存储 Java 调度
Android面试题之Kotlin协程到底是什么?它是线程吗?
本文探讨了协程与线程的区别,指出协程并非线程,而是轻量级的线程替代。协程轻量体现在它们共享调用栈,内存占用少,仅需几个KB。协程切换发生在用户态,避免了昂贵的内核态切换。在Kotlin中,协程通过Continuation对象实现上下文保存,允许高效并发执行,而不会像线程那样消耗大量资源。通过`runBlocking`和`launch`示例展示了协程的非阻塞挂起特性。总结来说,协程的轻量主要源于内存占用少、切换开销低和高并发能力。
17 0
|
1月前
|
Java 测试技术 开发工具
Android 笔记:AndroidTrain , Lint , build(1),只需一篇文章吃透Android多线程技术
Android 笔记:AndroidTrain , Lint , build(1),只需一篇文章吃透Android多线程技术
|
1月前
|
设计模式 网络协议 算法
9次Android面试经验总结,已收字节,阿里(1),费时6个月成功入职阿里
9次Android面试经验总结,已收字节,阿里(1),费时6个月成功入职阿里
|
1月前
|
安全 Linux Android开发
Android最强保活黑科技的最强技术实现,2024年最新阿里资深Android开发带你搞懂Framework
Android最强保活黑科技的最强技术实现,2024年最新阿里资深Android开发带你搞懂Framework
Android最强保活黑科技的最强技术实现,2024年最新阿里资深Android开发带你搞懂Framework
|
21天前
|
Java Linux 数据库
59. 【Android教程】多线程
59. 【Android教程】多线程
15 0
|
1月前
|
Android开发 Kotlin API
Android插件化探索与发现,kotlin协程切换线程
Android插件化探索与发现,kotlin协程切换线程
|
1月前
|
设计模式 存储 网络协议
Android面经:阿里五面斩获Offer的亲述!
Android面经:阿里五面斩获Offer的亲述!
|
1月前
|
Android开发
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
|
3天前
|
存储 Linux C语言
c++进阶篇——初窥多线程(二) 基于C语言实现的多线程编写
本文介绍了C++中使用C语言的pthread库实现多线程编程。`pthread_create`用于创建新线程,`pthread_self`返回当前线程ID。示例展示了如何创建线程并打印线程ID,强调了线程同步的重要性,如使用`sleep`防止主线程提前结束导致子线程未执行完。`pthread_exit`用于线程退出,`pthread_join`用来等待并回收子线程,`pthread_detach`则分离线程。文中还提到了线程取消功能,通过`pthread_cancel`实现。这些基本操作是理解和使用C/C++多线程的关键。