异步加载框架AsyncTask简易版

Android 使用SQLite的案例详解 这是Android 使用SQLite的详细案例总结 阅读详情
  • 首先自己创建一个简单的 异步加载框架
//自己创建的是没有带参数的异步加载
public abstract class MyAsyncTask {
    /**
     * 在Handler之中执行线程后的操作
     * */
    private Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            //接受消息
            onPostExecute();
        }
    };
    /**
     * 在线程之前执行的操作
     * */
    public abstract void onPreExecute();
    /**
     * 在线程之中执行的操作
     * */
    public abstract void doInBackground();
    /**
     * 在线程之后执行的操作
     * */
    public abstract void onPostExecute();
    /**
     * 执行线程操作
     * */
    public void execute(){
        onPreExecute();
        new Thread(){
            @Override
            public void run() {
                doInBackground();
                //执行完后发送消息
                mHandler.sendEmptyMessage(0);
            }
        }.start();
    }
 }

 //在主线程中的使用:
 new MyAsyncTask(){
            @Override
            public void onPreExecute() {
                mBar.setVisibility(View.VISIBLE);
            }

            @Override
            public void doInBackground() {//这里得到数据是在子线程的
                mlist = ContactUtil.getContactInfo(getApplicationContext());
            }

            @Override
            public void onPostExecute() {//这里得到的数据是在主线程的
                mListView.setAdapter(new MyAdapter(mlist));
                mBar.setVisibility(View.GONE);
            }
        }.execute();//记得执行这个方法!
  • 然后对比下AsyncTask的方法
//参数1:子线程执行所需的参数
//参数2:执行的进度
//参数3:子线程执行的结果
public class MyAsync extends AsyncTask<String ,Integer ,String>{
        //之前
         @Override
         protected void onPreExecute() {
             super.onPreExecute();
         }
        //之中
         @Override
         protected String doInBackground(String... params) {
             return null;
         }
        //之后
         @Override
         protected void onPostExecute(String result) {
             super.onPostExecute(result);
         }
        //进度
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
        }
    }
  • 就是自己封装的复杂实现….
  • 然后就是AsyncTask分析
    • 如果直接执行new MyAsyncTask().execute()方法,在android4.1以上是串行执行的 一个挨着一个执行的。
    • 在2.3.3 .execute()是并行执行的。
    • 如果在3.0以后的版本想并行执行,就需要用new MyAsynctask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR ) 就行了
Android异步加载网络图片实战全解析 在移动应用开发中,网络图片的加载是用户界面构建的核心环节之一。随着高清图片资源的广泛应用,如何高效、稳定地从网络获取并展示图片,成为提升用户体验的关键。本章将系统介绍Android平台下异步加载网络图片的基本概念与技术背景,阐述同步与异步操作的本质区别,解释主线程(UI线程)阻塞带来的性能问题,并引出异步处理机制的必要性。同时,概述常见的图片加载场景,如列表滚动中的图片加载、大图预览、缩略图生成等,分析其对内存、网络和渲染性能的综合要求。 阅读详情

相关推荐

Ajax异步调用框架

Ajax异步调用框架 程序介绍 不错的代码 共享一下

Noark入门之极速体验

官方网站 www.noark.xyz 开源地址 https://gitee.com/xiaoe/noark3 简介 Noark是一个游戏服务器端框架,可快速开发出一个易维护、易扩展且稳定高能的游戏服务器,让开发者专注于业务功能的开发 实现了配置注入,协议映射,模板加载,数据存储,异步事件,延迟...

594

基于Java的noark3游戏服务器端框架设计源码

本项目是基于Java的noark3游戏服务器端框架设计源码,包含881个文件,其中主要包含835个java源代码文件,11个xml配置文件等。系统采用了Java编程语言,实现了游戏服务器端框架的功能,可快速开发出易维护、高性能、高扩展能力的游戏服务器。项目结构清晰,代码可读性强,易于理解和维护。

spring异步框架使用教程

这种方法的好处是注解可以跨模块使用,因为线程池对象会被注入容器,整个服务共用。这个时候就需要一个公共的线程池。自定义一个全局的线程池,需要异步操作的就调用。正常来说,A类中注入B类对象,B类中再注入A类对象。因此,建议把异步都放在一个专门的异步类里面,这个类的方法只用来实现异步,方法内部再去调用真正的业务逻辑方法。查了一下,好像是因为异步注解的实现用到了动态代理,而一个类内部方法的调用不会走代理,也就没法实现异步。如果一个类里面有两个方法A、B,方法B添加了异步注解,方法A调用方法B,异步不会生效。

weixin_43975276的博客 1048

【Out-of-Distribution Detection】Evidential Deep Learning in NeurIPS 2018 个人理解

核心思想是将分类器的概率输出视为一个狄利克雷分布(Dirichlet Distribution)并替换,之后引入两个损失分别负责保证预测结果准确性和提升被错误分类的样本的不确定性。

研究兴趣:开放集识别、开放世界识别、新类发现、增量学习、少样本学习 2436

关于LIO-SAM编译时出现错误 /usr/bin/ld: 找不到 -lBoost::timer

关于LIO-SAM编译时出现错误: 下载LIO-SAM代码 进入LIO-SAM文件夹,通过以下代码编译: mkdir build cd build cmake .. make 报错: /usr/bin/ld: 找不到 -lBoost::timer collect2: error: ld returned 1 exit status CMakeFiles/lio_sam_imuPreintegration.dir/build.make:759: recipe for target 'devel/lib/li

wwtx的博客 3648

异步请求框架

异步请求框架实现

qq_42301955的博客 438

Android11 关于三方应用获取su权限

SELinux,全称Security-Enhanced Linux,是一种基于Linux内核的安全机制。它通过强制访问控制(MAC)来增强Linux系统的安全性,如果不禁用SELinux,完成下面的修改可能会导致设备进入Recovery界面!adb shell getenforce 为Permissive(宽容模式),查看报错日志,发现是客户apk想使用su命令提权,但是没有权限!对于保护系统资源和防止未经授权访问非常有帮助!系统这边做修改,让su权限下放到三方应用.客户的apk运行报错。

sinat_37429535的博客 1901

详解defer和async异步加载的区别

内部脚本和外部脚本 向HTML页面中插入JavaScript的主要方法就是使用script元素,有两种方式 内联脚本:直接在页面中嵌入JavaScript代码 <head> <script> alert('这是内联脚本!') </script> </head> 外联脚本:引用外部JavaScript文件 <head> <script src='someone.js'></scrip

Dax1_的博客 1779

告别‘打架’的检测头:手把手教你用PyTorch实现YOLOv11解耦头(附完整代码)

本文详细解析了YOLOv11解耦检测头的创新设计与PyTorch实现,通过解耦分类和回归任务,显著提升目标检测性能。文章包含完整的代码实现、架构设计解析及工程调优技巧,帮助开发者深入理解并应用这一先进技术。

weixin_29031057的博客 301

FoundationPose复现及Realsense应用

FoundationPose是一个统一的基础模型,用于6D对象姿态估计和跟踪,支持基于模型和无模型的设置。在测试时可以立即应用于未见过的新对象,无需微调,只要给出其CAD模型,或者捕获少量RGBD参考图像。得益于统一框架,下游姿态估计模块在两种3D模型设置中都是相同的,当没有CAD模型时,使用神经隐式表示进行高效的新视角合成。通过大规模合成训练,辅以大型语言模型(LLM)、一种基于transformer的新架构和对比学习公式,实现了强大的泛化能力。

m0_56661101的博客 1万+

AsyncTask异步加载框架原理(面试会常问到的哦!!!)

1.写法         public abstract class MyAsycnTask {             private Handler handler = new Handler(){                 public void handleMessage(android.os.Message msg) {                     po

时刻提醒自己该学习了-----成为人上人的第一步 704

Java 简易版 UDP 多人聊天室

【代码】Java 简易版 UDP 多人聊天室。

nmy15570188135的博客 1187

【Android】手写Android异步加载框架

一、手写异步加载框架MyAsycnTask(核心原理) 1.我为大家手写了一个异步加载框架,涵盖了异步加载框架核心原理。 MyAsycnTask.java import android.os.Handler; public abstract class MyAsycnTask { private Handler handler = new Handler(){ public void

iop_cn的博客 791

C++面试八股文

和静态多态(又称编译期多态,即在系统编译期间就可以确定程序将要执行哪个函数),其中动态多态是通过虚函数实现的,虚函数是类的成员函数,存在存储虚函数指针的表叫做虚函数表,虚函数表是一个存储类成员虚函数的指针,每个指针都指向调用它的地方,当子类调用虚函数时,就会去虚表里面找自己对应的函数指针,从而实现“谁调用、实现谁”从而实现多态。而C++符号表中的符号不是以函数名命名的,称为函数名修饰规则,虽然函数名相同,但是函数参数等其他属性不同,取的符号也不同,所以不会产生查询歧义的问题,使得函数可以重载。

qq_46676829的博客 905

Win10或Win11电脑找不到以太网网络适配器的解决方法

Win10或Win11电脑找不到以太网网络适配器的解决方法

Robot_PLC_HMI_Automation 655

HttpURLConnection+AsyncTask+接口回调实现简易get联网请求封装框架

首先搭建LoadInterFace接口(用于联网状态的各种状态):LoadInterFace public   interface LoadInterFace { //开启联网请求 public abstract String onRequestStart(); //联网请求结束 public abstract void onRequestFinish(Object obj); //联

x976039745的博客 1910

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

异步处理任务框架

异步处理任务框架: 异步获取头像图片 /** * * 第一个参数 就是图片下载路径的url * 第二个参数是 下载的进度 * 第三个参数就是异步任务执行完毕后的返回值 * @author Administrator * */ public class LoadImageAsynTask extends AsyncTask { LoadImageAsynTaskCa

xuanzeticai的专栏 519

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android Http请求框架一:Get 和 Post 请求

1、HttpUtil package com.app.android01; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection...

weixin_30369087的博客 81

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android开发的基础技能总结(1)

引言在基础的时候很多懂东西都会去实践一遍有的时候甚至是实现不止一遍,但是在工作中有些东西用不到,久而久之就忘记了,虽然再看的时候会有印象,但总是记不扎实。虽然有些东西很简单,但是不能做到信手捏来,再简单的东西也不是自己的,所以今天把自己以前写过的基础知识整理分类一下。网络图片请求 开启子线程请求public class MainActivity extends AppCompatActivity {

gg199402的博客 1631

项目实战:六、判断网络获取+数据库+页面展示

Activity页面切换 public class MainActivity extends AppCompatActivity {     private ViewPager pager;     private RadioGroup group;     private ArrayList&lt;Fragment&gt; list;     private Dao dao;     @...

qq_42436644的博客 134

流水笔记--2015-9-13

呼呼~~今天写流水笔记稍微多点时间,复习一下今天的流水~~ 一、观看慕课网的视频小知识点: 1、TextView走马观灯的效果:水平滚动(可以滚动指定次数或无限次滚动) 设置android:ellipsize属性; 设置android:marqueeRepeatLimit(循环显示的次数); 设置android:focusable属性; 只有处于焦点状态的TextView控件才会有走马

jiaojiaotongxi的博客 431

Android异步更新UI的几种方法

前言:我们知道在android开发中不能在非ui线程的其他线程中更新ui,但是,有的时候我们需要在代码中执行一些诸如访问网络、查询数据库等耗时操作,为了不阻塞ui线程,我们时常会开启一个新的线程(工作线程)来执行这些耗时操作,然后我们可能需要将查询到的数据渲染到ui组件上,那么这个时候我们就需要考虑异步更新ui的问题了。android中有下列几种异步更新ui的解决办法: Activity.runOn

宿罪的博客 1万+

android开发笔记之网络编程—异步加载(AsyncTask)

看了前面的文章我们知道请求网络的几种方式:1.使用TCP协议和URL进行网络编程 a)基于TCP协议:ServerSocket,Socket b)基于URL:URL 和 URLConnection 2.使用Http协议进行网络编程 a)HttpURLConnection b)HttpClient 我们知道这些网络请求都应该在子线程中,不能在主线程中(因为耗时操作会

minigeek的博客 4712

Android 异步加载图片-AsyncTask

AsyncTask定义了三种泛型类型 Params,Progress和Result。 •Params 启动任务执行的输入参数,比如HTTP请求的URL。 •Progress 后台任务执行的百分比。 •Result 后台执行任务最终返回的结果,比如Strin

伟哥~ YZ 3861

Android入门项目(四)AsyncTask异步加载图片和模拟进度条

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人。

2401_85729503的博客 1047
上一篇: Android关于R文件全部爆红的原因
下一篇: Android中自定义ProgressBar的样式
buttonXin
博客等级 码龄11年 13粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值