avatar
文章
864
标签
158
分类
0

主页
文章归档
文章标签
文章归类
文章列表
  • Music
  • Movie
友情链接
关于我
麦溪·在路上
主页
文章归档
文章标签
文章归类
文章列表
  • Music
  • Movie
友情链接
关于我

麦溪·在路上

Android并发编程之AsyncTask(异步任务)学习
发表于2022-01-05
[TOC] 概述由于Android的特性,如果要执行耗时操作,则必须方法子线程中执行。如果在主线程中执行耗时操作那么会导致应用程序无法及时响应。除了Thread可以开启子线程外,Android中扮演线程角色的有很多。比如:AsyncTask和IntentService(开启任务线程执行耗时操作),同时HandlerThread(含有handler的Thread)也是一种特殊的线程。本篇文章主要介绍AsyncTask,一个执行异步任务的类,底层是采用线程池实现的。而IntentService和HandlerThread。他们的底层则直接使用了线程。 一、Android中的线程在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制地产生,并且线程的创建和销毁都会有相应的开销。当系统中存在大量的线程时,系统会通过会时间片轮转的方式调度每个线程,因此线程不可能做到绝对的并行。 如果在一个进程中频繁地创建和销毁线程,显然不是高效的做法。正确的做法是采用线程池,一个线程池中会缓存一定数量的线程,通过线程池就可以避免因为频繁创建和销毁线程所带来的系统开销。关于 ...
Android中ThreadLocal的工作原理
发表于2022-01-05
[TOC] 文章参考:http://blog.csdn.net/singwhatiwanna/article/details/48350919 概述提到消息机制大家应该都不陌生,在日常开发中不可避免地要涉及到这方面的内容。从开发的角度来说,Handler是Android消息机制的上层接口,这使得开发过程中只需要和Handler交互即可。Handler的使用过程很简单,通过它可以轻松地将一个任务切换到Handler所在的线程中去执行。很多人认为Handler的作用是更新UI,这说的的确没错,但是更新UI仅仅是Handler的一个特殊的使用场景,具体来说是这样的:有时候需要在子线程中进行耗时的IO操作,这可能是读取文件或者访问网络等,当耗时操作完成以后可能需要在UI上做一些改变,由于Android开发规范的限制,我们并不能在子线程中访问UI控件,否则就会触发程序异常,这个时候通过Handler就可以将更新UI的操作切换到主线程中执行。 因此,本质上来说,Handler并不是专门用于更新UI的,它只是常被大家用来更新UI。Android的消息机制主要是指Handler的运行机制,Han ...
Android并发编程之HandlerThread学习
发表于2022-01-05
[TOC] 概述初次看到HandlerThread的名字,我们可能会联想到Handler和Thread这两个类,没错,它其实就是跟Handler和Thread有莫大的关系。HandlerThread继承自Thread,所以它本质上就是一个Thread,那既然是Thread,那么必然就应该是用来处理耗时任务,而且专门用来处理Handler中的耗时任务。 HandlerThread简介看看官方对它的解释: ++Handy class for starting a new thread that has a looper.The looper can then be used to create handler classes.Note that start() must still be called.++ 大致就是说HandlerThread可以创建一个带有looper的线程,looper对象可以用于创建Handler类来进行来进行调度,而且start()方法必须被调用。 在Android开发中,不熟悉多线程开发的人一想到要使用线程,可能就用 1new Thread(){…&# ...
Android并发编程之IntentService的学习
发表于2022-01-05
[TOC] 概述IntentService是一种特殊的Service,它继承了Service并且它是一个抽象类,因此必须创建它的子类才能使用IntentService。 IntentService可用于执行后台耗时的任务,当任务执行后它会自动停止,同时由于IntentService是服务的原因,这导致它的优先级比单纯的线程要高很多,所以IntentService比较适合执行一些高优先级的后台任务,因为它优先级高不容易被系统杀死。 在实现上,IntentService封装了HandlerThread和Handler,这一点可以从它的onCreate方法中看出来,如下所示。 12345678910111213141516@Overridepublic void onCreate() { // TODO: It would be nice to have an option to hold a partial wakelock // during processing, and to have a static startService(Context, Intent) ...
Android之Thread的线程学习
发表于2022-01-05
[TOC] Thread的基础学习这个是Android中最简单、最常见的异步方法,但是除了实现简单之后,基本上没有其他的优点了。 缺点: 不容易复用,频繁创建及销毁线程开销很大 复杂场景不容易使用 Android线程优先级Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); //设置线程优先级为后台,这样当多个线程并发后很多无关紧要的线程分配的CPU时间将会减少,有利于主线程的处理,有以下几种: 12345678910int THREAD_PRIORITY_AUDIO //标准音乐播放使用的线程优先级int THREAD_PRIORITY_BACKGROUND //标准后台程序int THREAD_PRIORITY_DEFAULT // 默认应用的优先级int THREAD_PRIORITY_DISPLAY //标准显示系统优先级,主要是改善UI的刷新int THREAD_PRIORITY_FOREGROUND //标准前台线程优先级int THREAD_PRIORITY_LESS_FAVORA ...
面试题-Android程序最多可以创建多少个线程
发表于2022-01-05
[TOC] 面试题:Android一个APP里面最少有几个线程?最多可以常见多少个线程? 一个进程最少有几个线程? Android一个进程里面最少包含5个线程,分别为: main线程(主线程) FinalizerDaemon线程:终结者守护线程。对于重写了成员函数finalize的对象,它们被GC决定回收时,并没有马上被回收,而是被放入到一个队列中,等待FinalizerDaemon守护线程去调用它们的成员函数finalize,然后再被回收。 FinalizerWatchdogDaemon线程:监控终结者守护线程。用来监控FinalizerDaemon线程的执行。一旦检测那些重定了成员函数finalize的对象在执行成员函数finalize时超出一定的时候,那么就会退出VM。 HeapTaskDaemon线程:堆栈守护线程。用来执行堆栈的操作,也就是用来将那些空闲的堆内存归还给系统。 ReferenceQueueDaemon线程:引用队列守护线程。我们知道,在创建引用对象的时候,可以关联一个队列。当被引用对象引用的对象被GC回收的时候,被引用对象就会被加入到其创建时关联的队列 ...
Android之查看Android系统相关的属性
发表于2022-01-05
[TOC] 123456789101112131415161718192021222324252627282930313233|msmnile_gvmq:/ $ cat /system/product/etc/build.prop ##################################### from generate-common-build-props# These properties identify this partition image.####################################ro.product.product.brand=qtiro.product.product.device=msmnile_gvmqro.product.product.manufacturer=QUALCOMMro.product.product.model=msmnile_gv ...
Android音视频学习之视频编码
发表于2022-01-05
[TOC] 概述• MPEG系列:(由ISO[国际标准化组织]下属的MPEG[运动图像专家组]开发)视频编码方面主要是MPEG1(VCD用的就是它)、MPEG2(DVD使用)、MPEG4(DVDRIP使用的都是它的变种,如DivX、XviD等)、MPEG4 AVC(正热门)。其还有音频编码方面,主要是MPEG Audio Layer 1/2、MPEG Audio Layer 3(大名鼎鼎的MP3)、MPEG-2 AAC 、MPEG-4 AAC等。注意,DVD音频没有采用MPEG的。 • H.26X系列:(由ITU[国际电传视讯联盟]主导,侧重网络传输,注意,只有视频编码)包括H.261、H.262、H.263、H.263+、H.263++、H.264(就是与MPEG4AVC合作的结晶)。 常见的音频编码格式有AAC、MP3、AC3,下面分别进行介绍。 多媒体播放组件(Android、iOS)Android多媒体播放组件包含MediaPlayer、MediaCodec、OMX、StageFright、AudioTrack等,下面分别进行介绍。 • MediaPlayer:播放控 ...
Android音视频多媒体学习路线
发表于2022-01-05
[TOC] 概述那么,作为一个音视频零基础的人来说, 开发一款短视频 SDK 到底需要具备哪些知识呢? 基础知识1、你必须要有 「C/C++」 开发语言基础,可以看我之前写的文章 音视频学习 (一) C 语言入门 https://juejin.im/post/6844904022827073543 音视频学习 (二) C++ 语言入门 https://juejin.im/post/6844904039407173646 2、接下来就需要掌握 「JNI」 基础了 音视频学习 (三) JNI 从入门到掌握 https://juejin.im/post/6844904041235873799 3、有了 「C/C++/JNI」 基础,你还要学会如何交叉编译 「FFmpeg」 等 C/C++ 库 音视频学习 (四) 交叉编译动态库、静态库的入门学习 https://juejin.im/post/6844904046067712008 音视频学习 (五) Shell 脚本入门 https://juejin.im/post/68449040466591252 ...
音视频开发之三种方式绘制图片
发表于2022-01-05
[TOC] 文章参考: https://mp.weixin.qq.com/s?__biz=MzU5NjkxMjE5Mg==&mid=2247483704&idx=1&sn=b7de912f25ea94c70668499fd7c40c09&chksm=fe5a3017c92db90143af0106e21574b375cc9633abaa711eb9aae9ca1deb7979a68aea459f91&scene=178&cur_album_id=1555170733142622209#rd 概述在android开发中我们最常使用的绘制图片的方式就是ImageView,设置src。那么有没有其他方案可以实现图片的绘制呐? 三种方案 通过Imageview设置setImageBitmap 1234final String path = Environment.getExternalStorageDirectory().getPath() + File.separator + "Pictures" + File.separa ...
1…8910…87
avatar
Frewen.Wang
在青麦地上跑着,雪和太阳的光芒
文章
864
标签
158
分类
0
关注我
公告
This is my Blog
最新文章
无题2023-12-22
无题2023-07-28
无题2023-07-27
基于Windows11安装Ubuntu双系统2023-07-20
无题2023-07-17
标签
系统源码 滤波算法 工具使用 云存储 卷积神经 Linux Android框架 STL函数 Activity pytorch NEON 编译脚本 go 渲染机制 OpenGL 编程工具 虚函数 RectNative JVM Linux命令 Kotlin基础 OpenMP AI const IDEA QNN C++ SELinux 目标检测 软件安装 threading 量化方法 四大组件 编译构建 SystemServer 开源项目 unique_ptr Java基础 系统安装 BroadcastReceiver
归档
  • 十二月 20231
  • 七月 20234
  • 六月 20231
  • 四月 20231
  • 三月 20232
  • 二月 202311
  • 一月 20232
  • 十二月 20221
网站资讯
文章数目 :
864
本站总字数 :
778.1k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2023 By Frewen.Wang
框架 Hexo|主题 Butterfly