自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 【Java反射以及代理模式】

在调用Proxy.newProxyInstance之前,加一句System.getProperties().put(“sun.misc.ProxyGenerator.saveGeneratedFiles”, “true”);而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.静态代理相当于是多写了一个代理类,在调用的时候调用的是代理类,在代理类中的处理还是原生的处理逻辑,不过在前后添加上需要添加的代码。缺点:需要为每一个被代理的对象都创建一个代理类。

2023-07-16 21:47:07 153

原创 【安卓四大组件】

•如果组件通过调用 startService() 启动服务(这会引起对 onStartCommand() 的调用),则服务会一直运行,直到其使用 stopself() 自行停止运行,或由其他组件通过调用 stopService() 将其停止为止。广播接收器是一个用于接收广播信息,并做出对应处理的组件。1.SingleTask 栈内复用模式,若须要创建的Activity已经处于栈中时,此时不会创建新的Activity,而是将存在栈中的Activity上面的其他Activity所有销毁,使它成为栈顶。

2023-06-08 09:02:48 220

原创 安卓跨进程通信-Socket通信

找到一个有执行shell权限的程序,然后和这个程序进行一个跨进程通信,app把要执行的命令发送给这个高权限的程序,程序就会执行app发送过来的命令,这个时候再跨进程返回结果给app既可以;主要把main.cpp覆盖到项目的:system/core/adb/daemon/main.cpp 然后在重新编译系统:make。编译步骤:1 :make rootServer //成功会生成rootServer到system/bin/ 下面。2 :接下来就是要让rootServer打包到img,

2023-05-30 12:07:23 436

原创 安卓12fallbackHome结束启动launcher的流程

fallbackHome监听ACTION_USER_UNLOCKED广播,然后调用maybeFinish()方法,里面构建homeIntent,查询,如果查到的包名还是自己。所以会调用该类的onUserUnlocked方法,最终调用到ActivityTaskSupervisor.java的onUserUnlocked方法。onUserUnlocked方法里面调用了onUser(USER_UNLOCKED, userId);下面搜索USER_UNLOCKED_MSG。然后搜索START_HOME_MSG。

2023-05-23 11:28:14 1089

原创 【安卓12activity启动流程--进程不存在的情况】

里面调用了 /frameworks/base/services/core/java/com/android/server/am/ProcessList.java的startProcessLocked方法。android.app.ActivityThread,所以进程创建后调用ActivityThread的main方法main方法里面调用了。对象,它是当前进程的IBinder对象,这样AMS也能跨进程调用该进程方法,形成了双向调用。发现里面才是真正创建了进程,里面调用了 Process.start。

2023-05-23 11:15:08 257

原创 【安卓Event日志分析】

EventLogTags.logtags里面有日志打印说明。

2023-05-17 11:34:47 163

原创 安卓Native层的多线程调用以及堆栈打印

创建Android.mk根据LOCAL_MODULE 名称编译,由于没有进行打包,将生成的文件push到机器data/local文件夹下,然后执行该文件。

2023-05-16 16:23:40 589

原创 安卓12开机动画Bootanimation启动流程--------propert_set方法与server的socket通信

流程:创建socket,然后连接socket server,最后发送属性设置信息。socket server进行相应操作、直接以读写的方式操作共享内存。propert_set通过socket(IPC)来通知server处理。然后搜索__system_property_set。

2023-05-15 17:06:14 227

原创 安卓12homeActivity的启动流程--第一次启动的是fallbackhome

然后通过resolveHomeActivity()从系统所用已安装的引用中,找到一个符合HomeItent的Activity,最终调用startHomeActivity()来启动Activity。obtainStarter() 方法返回的是 ActivityStarter 对象,它负责 Activity 的启动,一系列 setXXX() 方法传入启动所需的各种参数,最后的 execute() 是真正的启动逻辑。的startHomeOnAllDisplays()方法。

2023-05-12 10:45:10 1061 1

原创 安卓12开机动画Bootanimation源码分析-结束流程

这里跨进程通信,调用SurfaceFlinger.cpp里面的方法,将service.bootanim.exit属性设为1,开机动画退出。然后我们来看mActivityManager.bootAnimationComplete();如果为true,执行performEnableScreen()方法;该方法主要是结束开机动画,并且告诉AMS可以发送开机广播了。检查开机动画是否执行完毕,执行完毕返回true;然后调用finishBooting()方法。

2023-05-11 18:33:35 1608 1

原创 【安卓AMS启动流程】

Android 9.0 及以前版本,Acitivity 管理由AMS 和WMS 协作完成,导致在AMS 和WMS 中都有相似功能的实体,除了大量的代码冗余之外,二者之间的协作也非常困难,从Android 11 的代码变更看,google 最终的目的是把activity 和window融合,其实activity和window的融合早在Android 10就开始了,但目前只是简单的把代码整理到一起了。

2023-05-11 16:02:31 443

原创 安卓JNI原理

JNI技术作为Java世界和Native世界的桥梁,起着非常重要的作用,它是由虚拟机和运行时环境共同实现。首先需要理解动态库so是什么,以MediaRecorder.java为例,要能读懂这种Java和C++互相调用的代码。对于JNI注册的方式,静态注册就是利用javap命令生成头文件,以方法名构建联系;而动态注册则是手动进行Java方法和native方法关联,通过会必须被调用的JNI_OnLoad函数完成注册。

2023-05-10 17:11:29 432

原创 listview和recycleview

【代码】listview和recycleview。

2023-05-10 11:31:24 71

原创 fragment的生命周期以及静态加载和动态加载

在activity布局文件里面声明一个布局对象,然后在代码中动态替换。直接在对应activity布局文件里面导入。

2023-05-09 16:56:15 220

原创 Service保活

在完成Notification通知消息的构建后,在Service的onStartCommand中可以使用startForeground方法来让Android服务运行在前台。不同版本创建通知的方式不同,总结就是将service与通知结合起来,将service变为前台服务,在service的onDestroy方法里面取消通知。如果需要停止前台服务,可以使用stopForeground来停止正在运行的前台服务。

2023-05-09 16:29:09 105

原创 【安卓12activity启动流程-进程存在的情况】

ApplicationThread实例其实就是应用进程的服务端,用于被系统进程远程调用的。该类继承至IApplicationThread.Stub类。接着分析,这里我们可以发现ApplicationThread是ActivityThread的内部类,该类实例和Instrumentation实例均为Activity中的变量。获取ATMS引用然后转成我们需要的IActivityTaskManager类型,这里是通过ServiceManager(SM)类的静态方法getService来获取的。

2023-05-09 11:31:25 242

原创 【AIDL和安卓代码架构】

对每天的学习以及复习内容进行总结。

2023-05-06 11:33:41 157

原创 安卓12开机动画Bootanimation源码分析-启动流程

安卓开机动画Bootanimation源码分析-启动流程1.配置文件路径介绍2.Bootanimation服务启动分析1.配置文件路径介绍目录:bootanimation: frameworks/base/cmds/bootanimation/surfaceflinger : frameworks/native/services/surfaceflinger/init : system/core/init/文件:main_surfaceflinger.cpp : frame

2022-02-22 15:06:13 4962 1

原创 fragement 完成 简易版本的新闻页面

fragement 完成 简易版本的新闻页面显示效果手机页面显示流程(单页面,显示新闻标题,点击跳转到内容)平板页面显示流程 (双页面,同时显示新闻标题以及内容)整体流程显示效果手机页面显示流程(单页面,显示新闻标题,点击跳转到内容)主Activity对应的XML文件在 layout文件夹下面。平板页面显示流程 (双页面,同时显示新闻标题以及内容)主Activity对应的XML文件在** layout-sw600dp**文件夹下面整体流程首先加载主Activity,与之对应的XML文件

2022-01-04 11:23:57 1509

原创 【无标题】linux 为.sh设置快捷方式

cd /usr/share/applicationssudo touch Android-Studio.desktopsudo chmod +w Android-Studio.desktopsudo gedit Android-Studio.desktop里面加入:[Desktop Entry]Encoding=UTF-8Name=Android-StudioExec=sh ~/android-studio/bin/studio.shIcon=~/android-studio/bin/s

2021-12-21 13:04:05 2012

原创 【普通用户配置java 环境变量】

普通用户配置java 环境变量下载JDK 这里使用的是 android -studio 里面的jre配置环境变量 针对 普通用户开机读取配置文件下载JDK 这里使用的是 android -studio 里面的jre~/android-studio/jre配置环境变量 针对 普通用户首先vim ~/.bash_profile然后里面加入export JAVA_HOME=~/android-studio/jreexport PATH=JAVAHOME/bin:JAVA_

2021-12-21 11:50:17 1921

原创 常用排序算法

排序算法冒泡排序介绍算法描述代码实现选择排序介绍算法描述代码实现快速排序介绍算法描述代码实现冒泡排序介绍冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素

2021-11-24 11:54:41 67

原创 HashMap的相关面试题

HashMap的相关面试题JDK8中HashMap为什么到8转为红黑树 到6转为链表?HashMap的初始大小为什么是16?加载因子为什么是0.75?扩容倍数为什么是2?JDK8中HashMap为什么到8转为红黑树 到6转为链表?TreeNode(红黑树中)占用空间是普通Node(链表中)的两倍,为了时间和空间的权衡。如果是7,那么在极端情况下比如在同一个哈希桶中,对长度为8的哈希桶进行频繁的删除和插入,会频繁的 树化<=>非树化。HashMap的初始大小为什么是16?加载因子为什么是0

2021-11-21 15:54:22 527

原创 CAS机制

CAS机制乐观锁与悲观锁乐观锁与悲观锁悲观锁:多个线程操作同一个资源对象,使用互斥锁来实现线程之间的同步。操作系统会悲观的认为如果不进行严格的线程调用,将发生异常。所以每次只允许一个线程进行占用,阻塞其他线程。乐观锁:不锁定资源也能同步线程。利用CAS(Compare And Swap)机制。多个线程同时到达,进行读取数据为Old Value,代表之前读到的资源对象的状态值,New Value代表想要对该数据修改后的值。假设A线程率先获得时间片,比较Old Value是否一致,一致则进行修改。B

2021-11-21 14:53:32 417

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除