
Android
文章平均质量分 83
暖阳55555
这个作者很懒,什么都没留下…
展开
-
Android系统之View事件分发机制
我们对屏幕的点击,滑动,抬起等一系的动作都会被封装成若干个MotionEvent对象。MotionEvent可以分为以下三种事件类型:a.ACTION_DOWN:手指刚接触屏幕,按下去的那一瞬间产生该事件b.ACTION_MOVE:手指在屏幕上移动时候产生该事件c.ACTION_UP:手指从屏幕上松开的瞬间产生该事件Android系统时如何将用户的输入事件MotionEvent分发给具体的View进行处理呢?1. Activity分发输入事件Activity.java (frameworks\b原创 2021-12-19 00:35:23 · 1839 阅读 · 0 评论 -
Android系统之ViewTree的创建与绘制
1. ViewTree的创建在分析Activity启动过程中:Activity启动流程会执行startSpecificActivityLocked ActivityThread.performLaunchActivity //onCreate -> onStart SetContentView创建DecorView(DecorView = ContentView(用户需要显示的组件) + 系统其它组件) ActivityThread.handleResumeActivity //on原创 2021-11-21 22:58:13 · 2572 阅读 · 0 评论 -
Android系统之Intent传递数据的类型
1. 基本数据类型存数据:Intent it = new Intent(this, SecondActivity.class);XXX value = xxx;it.putExtra("key", value);startActivity(it);取数据:int value = getIntent().getXXXExtra("key");例如:存数据:Intent it = new Intent(FirstActivity.this, SecondActivity.class);原创 2021-10-16 18:28:54 · 989 阅读 · 0 评论 -
Android系统之Serializable和Parcelable的区别
1. Serializable和Parcelable的定义1.1 Serializablepackage java.io;public interface Serializable {}实现示例:public class Person implements Serializable{ private String name; private int age; public void setName(String name) { this.name = name;原创 2021-10-16 18:23:38 · 551 阅读 · 0 评论 -
Android系统之EventBus用法及源码分析
1. EventBus简介EventBus是一款在Android开发中使用的发布/订阅事件总线框架,基于观察者模式,将事件的接收者和发送者分开,简化了组件之间的通信,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。使用简单、效率高、体积小!下边是官方的 EventBus 原理图:2. EventBus使用方法2.1 使用步骤a. 添加依赖库在项目对应的build.gradle文件添加compile 'org.greenrobot:eventbus:3.0.0'b.原创 2021-09-20 23:47:55 · 665 阅读 · 0 评论 -
Android系统之Bundle用法
1. Bundle概述Bundle在Android开发中非常常见,它的作用主要时用于传递数据。Bundle传递的数据包括:string、int、boolean、byte、float、long、double等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serialiable或Parcelable接口。Bundle所保存的数据是以key-value(键值对)的形式保存在ArrayMap中例如:Bundle args = new Bundle();a原创 2021-09-12 18:02:31 · 16598 阅读 · 0 评论 -
Android系统之Fragment用法
1. Fragment概述Fragment是一种可以嵌入在Activity中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间。Fragment不能够单独使用,需要嵌套在Activity中使用,一个Activity可以有多个Fragment一个Fragment可以被多个Activity重用,可以在Activity运行时动态地添加或删除Fragment1.1 Fragment生命周期生命周期方法说明onAttach()Fragment和Activity相关联时调用。可以通过原创 2021-09-12 13:13:14 · 1228 阅读 · 0 评论 -
Android系统之onSaveInstanceState用法及源码分析
1. onSaveInstanceState简介如果系统由于系统约束(而不是正常的应用程序行为)而破坏了Activity,那么尽管实际 Activity实例已经消失,但是系统还是会记住它已经存在,这样如果用户导航回到它,系统会创建一个新的实例的Activity使用一组保存的数据来描述Activity在被销毁时的状态。系统用于恢复以前状态的已保存数据称为“实例状态”,是存储在Bundle对象中的键值对的集合。1.1 onSaveInstanceState简介a. onSaveInstanceState(原创 2021-09-05 18:40:52 · 8078 阅读 · 0 评论 -
Android布局方式讲解
1. 线性布局LinearLayout所有包含在线性布局里的控件在线性方向上依次排列1.1 子控件的排列方式android:orientation="horizontal" //水平android:orientation="vertical" //垂直1.2 子控件的对齐方式android:gravity="center_horizontal" 子控件水平方向居中android:gravity="center_vertical" 子控件竖直方向居中android:gravity转载 2021-08-29 11:57:21 · 332 阅读 · 0 评论 -
Android系统之SharedPreferences用法及源码分析
1. SharedPreferences简介SharedPreferences用来进程间共享数据,它只能存储简单数据类型(int、boolean、String等),复杂数据类型建议使用文件、数据库等其他方式存储。2. SharedPreferences使用方法a. 进程A保存数据//实例化SharedPreferences对象(第一步)SharedPreferences sp = getSharedPreferences("test", Activity.MODE_PRIVATE); //数据保原创 2021-08-28 20:30:06 · 454 阅读 · 0 评论 -
Android系统之Binder源代码解析
1. ServiceManager的启动流程system\core\roodir\init.rc:service servicemanager /system/bin/servicemanager //可知孵化器的目录为servicemanager class core user system group system critical onrestart restart healthd onrestart restart zygote onre原创 2021-08-15 20:57:53 · 1480 阅读 · 1 评论 -
设计模式之装饰者模式
好文:https://www.cnblogs.com/chenxing818/p/4705919.html1. 一个示例 Person / \ Man Decorator / \ ManDecorator1 ManDecorator21.1 定义public interface Perso...原创 2018-11-08 21:35:22 · 684 阅读 · 0 评论 -
Android系统四大组件源代码情景分析
在开发Android客户端的过程中经常会用到四大组件:Activity、Service、BroadCastReceiver、ContentProvider,四大组件的实现都是基于ActivityManagerService实现的,现在简单总结一下四大组件的实现原理1. ActivityActivity启动流程总结:IPC调用AMS.startActivity(),最终调用ActivitySt...原创 2018-11-11 20:34:11 · 715 阅读 · 0 评论 -
Android系统之Binder源代码情景分析
看过很多大牛写的Binder详解,因为讲得太过晦涩难懂,所以对于新手好像不太友好,为了让新手对于Binder有一个大概的认识,故准备了半个月写了这篇博客,博客的大概流程应该是正确的,希望看过的新手能够有一些收获。本文主要讲解了三个部分:ServiceManager 启动流程、ServiceManager 注册服务过程、ServiceManager 获取服务过程原创 2018-06-06 17:28:13 · 3568 阅读 · 1 评论 -
Android系统的启动流程
每个系统都有一个引导文件,由引导文件去运行linux内核,内核程序开始启动的时候会加载各种驱动和数据结构,开始加载android应用层的第一个进程(init进程c代码(system\core\init目录) Init.c),由这个进程加载其它的进程开始启动,本节主讲从内核开始执行Init.c到启动完成锁屏的过程1. system\core\init\Init.cint main(int...原创 2018-06-13 20:28:06 · 547 阅读 · 0 评论 -
Android系统线程间通信方式之Handler机制
一篇表较好的博文:好文:https://blog.youkuaiyun.com/Y_C_C/article/details/806055011. Handler的用法分析public class DownloadActivity extends AppCompatActivity implements View.OnClickListener { private TextView download...原创 2018-10-08 19:05:59 · 498 阅读 · 0 评论 -
Android系统线程间通信方式之AsyncTask机制
比较好的博客:https://blog.youkuaiyun.com/qq_30379689/article/details/53203556https://blog.youkuaiyun.com/guolin_blog/article/details/11711405AsyncTask是对Handler与线程池的封装,目的也是实现线程间的通信,子线程执行耗时操作发送消息到主线程更新UI,使用线程池的主要原因是避免...原创 2018-10-08 19:47:50 · 568 阅读 · 0 评论 -
Android系统线程间通信方式之runOnUiThread机制
一篇比较好的博客:https://www.jianshu.com/p/5555d1138d00子线程执行:runOnUiThread(new Runnable(){ public void run(){ //执行更新ui的操作 }});源码分析:frameworks\base\core\java\android\app\Activity.java:public...原创 2018-10-08 20:00:25 · 1756 阅读 · 0 评论 -
Android系统线程间通信的3种方式
Android应用程序开发过程中需要在子线程中刷新UI,但是刷新UI的工作只能在主线程中完成,如果强制在子线程刷新UI会导致崩溃,此时Handler机制很好地解决了这个问题Android系统有3种线程间通信的通信方式,分别为Handler、AsyncTask、runOnUiThread,其中AsyncTask、runOnUiThread从子线程切换到主线程刷新UI的原理是Handler机制1....原创 2018-10-08 20:07:32 · 3697 阅读 · 0 评论 -
Android系统四大组件源代码情景分析之ContentProvider
1. 几个重要概念1.1 什么是ContentProviderContentProvider为不同进程间的数据交互提供一系列的标准化接口1.2 什么是ContentResolver在ContentProvider的使用过程中,需要借用ContentResolver来控制ContentProvider所暴露处理的接口,作为代理来间接操作ContentProvider以获取数据1.3 什么是...原创 2018-11-09 15:24:00 · 284 阅读 · 0 评论 -
Android系统四大组件源代码情景分析之BroadCastRecerver
1. BroadCastRecerver用法参考:https://www.cnblogs.com/mukekeheart/p/5697260.html1.1 定义广播接收器 — 定义在public class内部,即为内部类private IntentFilter intentFilter ;private MyBroadcastReceiver myBroadcastReceiver ;...原创 2018-11-09 15:53:45 · 311 阅读 · 0 评论 -
Android系统四大组件源代码情景分析之Service
1. Service用法好文:https://blog.youkuaiyun.com/sy755754582/article/details/53924642效果:后台播放音乐1.1 定义Servicepublic class MyService extends Service { MediaPlayer mediaPlayer; @Override public IBinde...原创 2018-11-11 20:09:22 · 876 阅读 · 0 评论 -
Android系统四大组件源代码情景分析之Activity
1. 分析Activity的启动流程public class ReadFile extends AppCompatActivity { //AppCompatActivity最开始的父类为Activity ... Intent intent = new Intent(ReadFile.this, ActivityNew.class); startActivity(intent); ...原创 2018-11-11 20:13:24 · 276 阅读 · 0 评论