主页

Android问道--四大组件的工作过程-1-Activity与Service

序言 在之前的两篇文章中介绍了系统启动的过程和应用程序进程的启动过程,应用程序进程启动后就该启动应用程序了,也就是启动根Activity 四大组件是应用开发中最常接触的,活动,服务,广播接收器,内容提供者,这篇文章会深入介绍它们的工作过程,四大组件的工作过程和插件化技术有所关联 根Activity的启动过程 Activity的启动过程分为两种,一种是根Activity的启动过程,一种是普通Activity的启动过程,根Activity指的是应用程序启动的第一个Activity,因此根Activity的启动过程可以理解为应用程序的启动过程,普通Activity指的是除了根Activity以外的Activity,根Activity和普通Activity启动是由重叠部分的,根Acti...

阅读更多

Android问道--应用程序进程的启动过程

应用程序进程简介 当我们想要启动一个应用程序的时候,首先要保证该应用程序所需的进程时候已经启动,AMS在启动应用程序的时候会检测这应用程序需要的进程是否存在,不存在的话就会请求Zygote进程启动所需的进程,在Android系统启动的文章中我们知道了Zygote的Java层会创建一个Service端的Socket,该Socket用来等待AMS请求Zygote创建新的应用程序进程,Zygote进程通过Fock自身来创建应用程序进程,这样应用程序进程就获得了Zygote进程在启动时创建的虚拟机实例,应用程序进程创建过程中还创建了Binder线程池和消息循环,这样进程中的程序就可以使用Binder进行进程间通信了 应用程序进程启动过程介绍 应用程序进程创建过程的步骤比较多,分为两个部分...

阅读更多

Android问道--系统启动的流程

Android系统启动流程 Android启动和Android的很多系统组件相关联,如应用启动流程,四大组件的原理,AMS,ClassLoager Android系统中用户空间启动的第一个进程是init,进程号为1 init进程是Android系统启动的一个关键步骤,有很多重大职责,init是多个源文件共同组成的,文件位于源码system/core/init Android启动流程前几步 启动电源和系统启动 当电源按下后引导芯片代码从ROM开始执行,加载BootLoader到RAM中 引导程序BootLoader 作用为拉起系统OS并运行 Linux内核启动 完成内核系设置(设置缓存,被保护...

阅读更多

MiniRetrofit---手动实现一个Retrofit

使用效果 定义API接口 interface AppService { @GET("/artist/songs") fun doNetWork(@Field("id") id: String): YepHttpCall } 初始化并执行请求 val miniRetrofit = MiniRetrofit.Builder().baseUrl("http://192.168.1.108:3000").build() val appService = miniRetrofit.create(AppService::class.java) appService.doNetWork("6452").enqueue(object : Ca...

阅读更多

HCKV---手动实现一个MMKV框架

整体学习流程梳理 首先是学习如何创建一个可以供其他APP导入的库 梳理MMKV的源码,观测其实现的关键代码 学习mmap,将文件映射到内存上 学习NDK和C++以便使用高性能IO 学习protobuf编码 预期目标 实现最基本的Key-Value的存储模式 数据加密 数据校验 数据容错 线程同步,进程同步 结构设计 java层 全局初始化类 获取HCKV方法 数据存储方法 数据读取方法 Native层 全局初始化 HCKV全局缓存工具 内存映射文件 ...

阅读更多

Service和MediaSession实现音乐播放器

前言 就Android的音乐播放器来说,大致有两种不同的实现方案 构建一个Service来进行音乐数据获取和音乐控制,需要自定义状态数值和回调接口,通过广播等方式完成Android和Service之间的沟通,让用户在Activity上的操作能在Service上做出响应,我是使用BindService后通过设置LiveData的Observe来完成的,这样的做法不但繁琐耦合度高,后期更改需求就像是砍到了大动脉 Google在Android5.0之后添加了MediaSession框架,用来解决媒体播放时界面和Service的通讯问题,使用这个框架可以减少一些复杂的代码,让代码的耦合度降低,提升代码的可读性 Service实现 package org.phcbest.net...

阅读更多

MVVM Demo解析

DEMO地址 phcbest/MVVM-Demo 项目依赖版本 implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' ...

阅读更多

MVVM框架解读

历史渊源 MVC架构 最开始Android开发的时候,流行的是MVC架构,这种架构是从后端演变过来的(Model-View-Controller) View : Activity,Fragment的XML视图 Controller : 就是Activity/Fragment的实现,进行绑定UI和处理业务 Model : 数据获取存储和更新 Controller会持有对View的引用 View通过接口来调用Controller的实现 Controller会持有对Model的引用 Model通过接口来返回数据给Controller 优点 View没有持有Model,二者进行了隔离,View更换以后,Model不受影响,一个View可以有多个Model,...

阅读更多