![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android开发艺术
文章平均质量分 79
android开发的进阶
梵高话葵
这个作者很懒,什么都没留下…
展开
-
android开发艺术(一)之 Activity的生命周期和启动模式
1.Activity的生命周期一般分为两部分,用户参与下的典型情况生命周期,另一种是异常情况下的生命周期1.1 典型情况下Activity生命周期onCreate:表示Activity正在被创建,这是生命周期的第一个方法。 在这个方法中做初始化工作,比如调用setContentView去加载界面布局资源、初始化Activity所需数据等。此方法的传参Bundle为该Activity上次被异常情况销毁时保存的状态信onRestart: 表示Activity 正在重新启动。一般情况下,当前Activi原创 2020-05-21 11:25:08 · 267 阅读 · 0 评论 -
android开发艺术(二)之 IPC
1.多进程模式主线程(UI线程):UI操作有限个子线程:耗时操作不可在主线程做大量耗时操作,会导致ANR(应用无响应)1.1开启多进程(不常用)通过JNI在native层fork一个新的进程。(常用)在AndroidMenifest中给四大组件指定属性android:process上面的示例分别为SecondActivity 和ThirdActivity指定了process 属性,并且它们的属性值不同,这意味着当前应用又增加了两个新进程。假设当前应用的包名为“com.ryg.chapte原创 2020-05-22 16:21:25 · 227 阅读 · 0 评论 -
android开发艺术IPC之Binder
Android是基于Linux内核基础上设计的,却没有把管道/消息队列/共享内存/信号量/Socket等一些IPC通信手段作为Android的主要IPC方式,而是新增了Binder机制,其优点有:传输效率高、可操作性强:传输效率主要影响因素是内存拷贝的次数,拷贝次数越少,传输速率越高。几种数据传输方式比较:从Android进程架构角度分析:对于消息队列、Socket和管道来说,数据先从发送方的缓存区拷贝到内核开辟的缓存区中,再从内核缓存区拷贝到接收方的缓存区,一共两次拷贝;而对于Binder来说,数据从原创 2020-05-21 17:08:08 · 134 阅读 · 0 评论 -
Binder连接池Demo
1.首先在AIDL包中提供两个 AIDL 接口 :ISecurityCenter 和 ICompute// ICompute.aidlpackage AIDL;interface ICompute {/*用来做加法计算的aidl*/ int add(int a,int b);}// ISecurityCenter.aidlpackage com.example.binderpooldemo;interface ISecurityCenter {/*写入账号,密码的aidl*/原创 2020-08-01 22:00:47 · 117 阅读 · 0 评论 -
android开发艺术(三)之View
View是android中所有控件的基类,Button、TextView、LinearLayout共同基类都是View;ViewGroup 继承自View,View本身可以是单个控件,也可以是多个控件组成的一组控件。原创 2020-05-23 11:34:53 · 1064 阅读 · 0 评论 -
android开发艺术(三)之View工作原理及其自定义
1.基本概念1.1 ViewRootViewRoot对应于ViewRootlmpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView 添加到Window 中,同时会创建ViewRootlmpl 对象,并将ViewRootlmpl对象和DecorView建立关联,这个过程可参看如下源码:...原创 2020-05-23 15:53:21 · 173 阅读 · 0 评论 -
android开发艺术(三)之RemoteViews
1.RemoteViews的应用主要用于通知栏和桌面小部件的开发过程。通知栏和桌面小部件的开发过程中都会用到RemoteViews,它们在更新界面时无法像在Activity里面那样去直接更新View,这是因为二者的界面都运行在其他进程中,确切来说是系统的SystemServer 进程。为了跨进程更新界面,RemoteViews提供了一系列set方法,并且这些方法只是View全部方法的子集,另外RemoteViews中所支持的View 类型也是有限的1.1 在通知栏的应用通知栏主要是通过Notifica原创 2020-05-23 17:33:18 · 206 阅读 · 0 评论 -
android开发艺术(四)之 Drawable
1.Drawable基础知识Drawable类是抽象类,是所有Drawable的基类,是一种在Canvas上进行绘制的对象使用方式:创建所需Drawable的根节点的xml,再通过@drawable/xxx引入布局中Java代码:new一个需要的Drawable并set相关属性,最后加载到布局中。Drawable可通过 getIntrinsicWidth() 和 getIntrinsicHeight() 获取其内部宽/高,并不是所有Drawable都有内部宽/高。图片所形成的Drawa原创 2020-05-24 12:32:32 · 437 阅读 · 0 评论 -
android开发艺术(五)之Animation(动画)
1. animation简述Android动画分为三种:view动画、帧动画和属性动画,帧动画也属于View动画的一种,不过它和平移、旋转等常见的view动画在表现形式上略有不同;View动画通过对场景里的对象不断做图像变换(平移、缩放、旋转、透明度)从而产生动画效果,是一种渐进式动画,并且view动画支持自定义帧动画通过顺序播放一系列图像从而产生动画效果,可以理解为图片切换动画,如果图片过多过大就会导致OOM属性动画通过动态的改变对象的属性从而达到动画效果,属性动画为API11新特性,低版本通过兼原创 2020-05-24 17:24:33 · 343 阅读 · 0 评论 -
android开发艺术(六)之 Window
1. Window简介Window表示窗口概念,在桌面显示类似悬浮窗效果,Android中所有的视图都是通过Window来呈现的WindowManager是外界访问Window的入口,Window的具体实现位于WindowManagerService中,WindowManager和WindowManagerService的交互是一个IPC过程。2. Window&windowManager2.1 Window&PhoneWindowWindow是一个抽象类,提供了各种窗口操作的方原创 2020-05-25 10:44:43 · 311 阅读 · 0 评论 -
android开发艺术(七)之四大组件
000原创 2020-05-25 15:20:15 · 127 阅读 · 0 评论 -
android开发艺术(八)之android的消息机制
android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。MessageQueue采用单链表的数据结构存储消息列表;Looper以无限循环的形式去查找是否有新消息,如果有就处理消息,否则就一直等待。...原创 2020-05-01 20:04:06 · 230 阅读 · 0 评论 -
android开发艺术(九)之线程和线程池
线程和线程池1.简介2.主线程和子线程3.android中的线程形态3.1AsyncTask3.1.1 概述3.1.2 分析3.2HandlerThread3.3IntentService1.简介1.1 从用途上来说,线程分为主线程和子线程,主线程主要处理和界面相关的事情,而子线程用于执行耗时操作。如果在主线程中执行耗时操作会导致程序无法及时地响应,因此耗时操作必须放在子线程中去执行。Thre...原创 2020-05-03 14:15:39 · 132 阅读 · 0 评论 -
android开发艺术(十)之Bitmap的加载和Cache
1.Bitmap的高效加载1.1 Bitmap的加载BitmapFactory提供四类方法加载图片:decodeFile、 decodeResource、decodeStream和decodeByteArray,分别用于支持从文件系统、资源、输入流以及字节数组中加载出一个Bitmap对象,其中decodeFile和decodeResource又间接调用了decodeStream方法,这四类方...原创 2020-05-04 16:11:17 · 149 阅读 · 0 评论 -
android开发艺术(十一)之 综合技术 and JNI和NDK开发
反编译问题2.1 dex2jar可以将一个apk转成一个jar包,在通过反编译工具jd-gui打开就可以看到源码2.2Apktool主要用于应用的解包和二次打包1.使用CrashHandler来获取应用的crash信息解决方法:Thread的setDefaultUncaughtExceptionHandler当crash 发生的时候,系统就会回调UncaughtExceptio...原创 2020-05-04 20:56:23 · 248 阅读 · 0 评论 -
Android性能优化
性能优化1.性能优化方法1.布局优化2.绘制优化3.内存泄露优化4.响应速度优化5.ListView 优化6.Bitmap 优化7.线程优化8.性能优化建议2.ANR日志的分析方法3.内存泄漏分析工具MAT4.设计原则1.性能优化方法过多地使用内存会导致程序内存溢出,即OOM过多地使用CPU资源,一般是指做大量的耗时任务,会导致手机变得卡顿甚至出现程序无法响应的情况,即ANR1.布局优化...原创 2020-05-05 21:37:09 · 111 阅读 · 0 评论