- 博客(104)
- 资源 (12)
- 收藏
- 关注
原创 startActivity启动流程
从桌面点击应用图标开始到Activity创建并执行onCreate,activity的启动涉及到两个进程system_server(AMS所在进程)和Zygote(如果进程没有创建需要先创建)如下是创建进程的流程,Socket服务端未贴出,app进程的创建可参考 (如下是应用进程已经创建,一直到Activity的onCreate被调起。realStartActivityLocked: 应用进程已经创建。startProcessAsync:应用进程还未创建。
2024-06-20 13:41:47
286
原创 Zygote进程的理解
Zygote进程是安卓系统的一个重要进程,由init进程创建而来;另外系统里的重要进程(system_server等)都是由zygote进程fork的,所有的app进程也是由zygote进程fork的。
2024-06-17 14:31:39
290
原创 CameraProvider启动流程
从Android 8.0之后,Android 引入Treble机制,主要是为了解决目前Android 版本之间升级麻烦的问题,将OEM适配的部分vendor与google 对android 大框架升级的部分system部分做了分离,一旦适配了一个版本的vendor信息之后,之后的版本再进行升级时,直接升级system即可,这个就不会给OEM厂商升级带来太大的工作量,直接升级最新功能,可以解决目前市面上Android版本过来凌乱的问题。 首先Treble机制在Vendor分区中有两种模式,一个编译成so库,
2024-05-31 19:38:18
202
转载 Native内存泄露分析---perfetto
或者参考如下,修改tools/heap_profile 中 curl 下载方式。这里只能抓到一次内存的快照,如果想连续记录多次内存的数据需要能Root手机。如果下载失败,Windows系统请 从连接下载 并参考里面说明放文件。抓取一次某个应用的内存命令如下,注意提前关闭其它adb程序,如AS。可以看到第一个大块有内存一直上升,结合其中的栈堆,分析并解决即可。有时很小泄露,不容易看出,可以反复很多次操作应用后,对比前后数据。通过点击方块,对比不用时刻的内存。每执行一次,上一步会记录一次。
2024-05-27 10:46:17
99
转载 Android build.gradle配置教程 史上最全的Android build.gradle配置教程
从Android Studio3.0后compile引入库不在使用,而是通过api和implementation,api完全等同于以前的compile,用api引入的库整个项目都可以使用,用implementation引入的库只有对应的Module能使用,其他Module不能使用,由于之前的项目统一用compile依赖,导致的情况就是模块耦合性太高,不利于项目拆解,使用implementation之后虽然使用起来复杂了但是做到降低偶合兴提高安全性。如果这样,Gradle在打包时就会提示错误(警告)。
2024-01-24 14:59:14
1882
原创 GLES学习笔记---OpenGL绘制到ImageReader
ImageReader 之前经常使用在camera应用里面,创建一个ImageReader,然后获取surface,配流和下发request时候将surface下发给framework,中间具体对ImageReader做了什么没有具体研究过,等到Hal层camera回帧的时候,ImageReader的onFrameAvailable就会回调上来,通过reader就可以获取图片了。虽然使用上很简单,但是其实ImageReader里面要学习的东西还是很多的。
2023-12-25 09:23:28
830
原创 GLES学习笔记---EGLImage绑定纹理
为啥需要glFinish暂时还不清楚,没有glFinish的话ptrReader里面的像素值还是输入的inBuffer的值。还有就是不清楚为啥绘制完了,绘制的结果就到了HardwareBuffer里面了,HardwareBuffer是输入啊。绘制完了glFinish一下,AHardwareBuffer_lock就能将绘制好的内容读出来。离屏渲染,绘制到fbo对应的纹理上(不是屏幕)绑定EGLImage到纹理。创建EGLImage。
2023-12-21 20:45:35
1191
1
原创 GLES学习笔记--glReadpixels 读取数据全是0
textureId 和 bitmap绑定,offTexture和fbo绑定,通过绑定fbo实现离屏渲染,将textureId对应的纹理渲染到offTexture上,最后将offTexture绘制到屏幕。所有流程都正常,最后也绘制到屏幕了 ,但是当我想通过glReadPixel读取一下buffer看看的时候,发现buffer内容是0,找了半天没找到问题所在。通过循环遍历看看buffer里面有没有非0的,然后重这非0的地方开始输出像素看看,发现确实和传入的一样,所以猜想是对的。
2023-12-20 09:50:15
509
原创 Android Camera FW 里的requestId和frameId
安卓相机frameworks里面经常出现requestId和frameId,最近简单看了一下代码,发现相关流程还是很复杂的,总结来看requestId 就是上层(java)发送的repeating(capture)请求的id,是从0开始递增的。所以综上看 requestId就是一个标记上层下发request的作用,回调metadta的时候方便找到对应的回调接口,所以requestId的作用仅仅是联系APP和FW的,对于HAL来说没有作用。
2023-10-07 17:35:08
390
原创 Android 监听当前网络状态是否可以访问Internet
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Hand...
2019-11-14 17:42:26
225
原创 copy DB to sdcard
public static void copyDB(){ File dbFile = new File(Environment.getDataDirectory().getAbsolutePath()+"/data/com.hozo.easypanorama/databases/easypano.db"); FileInputStream fis = null; File...
2019-09-23 15:00:38
155
转载 JNI_OnLoad简介
一、JNI_OnLoad简介Java JNI有两种方法,一种是通过javah,获取一组带签名函数,然后实现这些函数。这种方法很常用,也是官方推荐的方法。还有一种就是JNI_OnLoad方法。当Android的VM(Virtual Machine)执行到C组件(即*so档)里的System.loadLibrary()函数时,首先会去执行C组件里的JNI_OnLoad()函数。它的...
2019-08-15 15:21:55
857
转载 Android Studio 3.0 JNI的实现
https://blog.csdn.net/ziyoutiankoong/article/details/79696279
2019-08-15 14:47:54
108
转载 Android touch 事件分发
1. 效果图下面布局中用到的控件都是自定义的,我们可以通过对自定义控件的相关事件方法添加log。练习图2.主要代码Activity @Override public boolean onTouchEvent(MotionEvent event) { Log.i(TAG,"Activity's onTouchEvent returns su...
2019-08-08 11:40:03
137
原创 camera api2 open camera
CameraManager 属于 App 进程CamseraService CameraDeviceClient Camera3Device CameraProviderManager 属于 cameraserver 进程CameraProvider CameraDevice 属于 camera hal 进程...
2019-07-30 14:41:02
267
转载 Android自定义控件三部曲文章索引
https://blog.csdn.net/harvic880925/article/details/50995268
2019-04-28 15:03:23
143
转载 Android ImageView 的scaleType 属性图解
ImageView 是 Android 中最常用的控件之一,而在使用ImageView时,必不可少的会使用到它的scaleType属性。该属性指定了你想让ImageView如何显示图片,包括是否进行缩放、等比缩放、缩放后展示位置等。Android 提供了八种scaleType的属性值,每种都对应了一种展示方式,下面就对每一种scaleType属性值进行图文解释。首先,这个是测试放到ImageV...
2019-04-12 10:09:50
162
原创 dispatchTouchEvent onInterceptTouchEvent onTouchEvent
https://blog.csdn.net/qq_30379689/article/details/53967177dispatchTouchEvent 事件分发onInterceptTouchEvent 事件处理onTouchEvent 事件响应1、 如果所有都返回 superdispatchTouchEvent (Activity)dispatchTou...
2019-03-22 16:39:22
284
原创 StatusBar 和 NavigationBar 的 隐藏与浸透式
/** * View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。 * View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态栏遮住。 * * View.SYSTEM_UI_FLAG_HIDE_NAVIGATI...
2019-02-28 17:42:58
414
转载 invalidate和requestLayout
总述:View有两个很重要的方法:invalidate和requestLayout,常用于View重绘和更新。Invalidate:To farce a view to draw,call invalidate().——摘自View类源码从上面这句话看出,invalidate方法会执行draw过程,重绘View树。当View的appearance发生改变,比如状态改变(en...
2019-02-28 11:48:44
439
转载 android布局中几个距离单位的区别:px、dp、sp
一、px像素,我们经常说的400*800这种的就是像素,这个比较好理解。二、dp要理解dp,首先要先引入dpi这个概念,dpi全称是dots per inch,对角线每英寸的像素点的个数,所以,它的计算公式如下:比如height和width即为长宽的像素,平方和即为对角线的像素个数,size即我们常说的5寸手机、4寸手机中的5和4,即对角线的长度。显然,一样是5寸的手机...
2019-02-28 11:46:50
484
转载 Thread.currentThread()与this的区别
转载自: https://blog.csdn.net/yezis/article/details/57513130 希望博主见谅在自定义线程类时,如果线程类是继承java.lang.Thread的话,那么线程类就可以使用this关键字去调用继承自父类Thread的方法,this就是当前的对象。另一方面,Thread.currentThread()可以获取当前线程的引用,一般都是在没有线程...
2018-12-18 19:52:10
239
原创 Android Studio 中的个人习惯设置
1、方法参数名提示的取消方法默认情况下 Android Studio 中字符串前面有个 hint,看着不习惯2、设置默认展开方法3、默认文件编码建议使用 utf-8,中国的 Windows电脑,默认的字符编码为 GBK。Settings--> File Encodings。建议将 IDE Encoding、 Project Encoding、 Properties F...
2018-12-11 10:29:38
530
原创 Activity传递的Parcelable并不是同一个对象
网上清一色的说Activity之间通过parcel传递对象,但是其实这并不是同一个对象。我不知道是我理解错了还是怎么回事?希望看到文章的人点评一下class MyParcelable implements Parcelable { private static final String TAG = "TestActivity"; private String userna...
2018-10-24 15:07:30
496
1
转载 eclipse 中 NDK 配置
一、关于NDK:NDK全称:Native Development Kit。 1、NDK是一系列工具的集合。 NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。 NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要
2017-03-16 10:45:58
370
原创 文件句柄申请太多导致异常 Too many open files
最近做一个压力测试,打开关闭,打开关闭相机应用,当打开到200次左右的时候总是抛出下面的异常03-06 11:48:03.220 5794 5908 E Parcel : dup() failed in Parcel::read, i is 1, fds[i] is -1, fd_count is 2, error:Too many open files03-06 11:48
2017-03-07 10:45:31
10328
1
转载 Android模拟屏幕点击,滑动等事件
模拟事件全部是通过input命令来实现的,首先看一下input命令的使用: usage: input ... input text input keyevent input tap input swipe 1. keyevent指的是Android对应的keycode,比如home键的
2017-03-02 10:00:22
4792
Linux 下的 Wireshark
2013-05-05
打开perfetto网站报错
2023-10-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人