Activity Manager

openGLES(一)

点点圈 提交于 2021-02-18 04:19:33
准备工作 工具安装 jdk安装 sdk安装 IDE开发环境 一个手机 推荐使用真机,它可以反映真实的性能和结果。 虚拟机创建 Android SDK 执行SDK Manager.exe Tools--> Manage AVDS new GLSurfaceView 他是一个特殊的类初始化OpenGL,可以处理OpenGLES的基本操作,,渲染器可以在一个称为surface的里面完成。渲染是在一个“surface”的特定区域中完成的,也就是视口。 它可以轻松的管理声明周期。 GLSurfaceView是没有动画和特效的。可以使用TextView,TextView可以通过GLSurfaceView转换.或者直接使用TextView。 回顾声明周期 create:创建 destroy:销毁 pause:暂停 resume:回来继续。 创建程序 1.创建一个项目 2.初始化OpenGL 使用一个特殊的类GKSurfaceView进行初始化,他会初始化比较基本的操作 GLSurfaceView类也可以使用activity的生命周期方法。 public class MainActivity extends Activity { @Override protected void onCreate( Bundle savedInstanceState) { super. onCreate(

读Android源码-冷启动时的ActivityThread

笑着哭i 提交于 2021-02-02 00:58:11
冷启动创建应用时,ActivityThread的主要方法: main() -- 1. 开启消息循环 -- 2. 通知ActivityManagerService -- 3. 添加GCWatcher handleBindApplication() -- 1. 创建LoadedApk -- 2. 创建Instrumentation -- 3. 创建Application -- 4. 通过Instrumentation调用Application的onCreate()方法 main() main方法是一个应用创建的入口,他主要做了3件事 1. 开启消息循环 调用Looper.prepareLoop() Looper.loop(),开启主线程的消息循环,以便于ApplicationThread调用ActivityThread中的生命周期方法。 public static void main(String[] args) { ... Looper.prepareMainLooper(); ActivityThread thread = new ActivityThread(); thread.attach(false); if (sMainThreadHandler == null) { sMainThreadHandler = thread.getHandler(); } ...

Android基础考试知识点清单

爷,独闯天下 提交于 2021-01-18 10:38:43
第1章 Android应用开发环境 1.了解智能手机常见操作系统有哪些,了解Android和iOS两大操作系统的特点。 2.掌握Android操作系统的四层体系结构及各层的内容。 Linux内核 Android系统内核建立在Linux 2.6 之上。 Linux内核提供了安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务。 函数库 这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。 应用程序框架层 Android应用程序框架提供了大量API供开发者使用。 应用程序层 开发者开发的各种Android App。 3.Android应用程序开发经常用到的组件有哪些,它们的作用是什么。 四大应用组件 Activity:主要负责显示内容 Service:后台运行程序 BroadcastReceiver:消息接收器 ContentProvider: 负责跨应用的数据交换 Intent:不同组件间通信的载体 4.掌握Android开发环境的搭建。 开发IDE:Android Studio 可通过环境变量改变安装位置: ANDROID_HOME: SDK安装文件夹 ANDROID_SDK_HOME:虚拟机文件夹 5.了解Android模拟器的使用。 第2章 Android应用的界面编程 1.熟练掌握LinearLayout

又一开源项目爆火于GitHub,Android高级插件化强化实战

只愿长相守 提交于 2021-01-11 14:23:30
前言 相信大家都知道安卓应用开发的大量难题,其实最后都需要插件技术去解决。 现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家在熟悉不过的应用都在使用。 插件技术可以给项目开发带来巨大的好处,比如:并行高效开发、模块解耦、解除单个dex函数不能超过65535的限制、动态更新升级、按需加载等等。 掌握好插件技术,需要如下的安卓基础和相关知识,例如: Android应用程序安装,加载过程 Android应用运行机制,生命周期调用原理 Android应用资源编译打包原理 Android应用读取资源原理 Android系统AMS、PMS、NMS等系统服务的运作原理 增量更新 HOOK等技术 本文将从基础的插件化原理到Android插件化初探再到大厂架构演化实战应用,总结出了较为全面与完整的安卓插件技术与插件化对 Android开发的重要性。 插件化原理 1.类加载 2.双亲委托机制 3.资源加载 4.四大组件支持 5 ProxyActivity代理 6 hook方式 7 其他组件 8 Android动态加载框架DL的架构与基本原理解析 9 Android 插件化框架 DynamicLoadApk 源码分析 Android插件化初探 1.从零开始实现一个插件化框架(1) 概念 插件化解决的问题 各插件化框架对比 插件化实现

ANR 问题

孤街醉人 提交于 2021-01-09 11:55:02
转 https://blog.csdn.net/qzh123456/article/details/78737791 ANR问题,相信是每位开发日常都会遇到的问题,对于这类问题的分析,按照官方的推荐,或网络博客的总结思路能解决一定的问题,但是多数时候大家的 困惑就是应用本逻辑很简单,耗时很短或应用堆栈完全正常,或者或处于空闲状态,可系统为什么就认为接收者发生ANR了呢?下面将之前公司的一次内部分享开 放出来,用几个实例从不同角度分析导致ANR产生的Root Case。也希望对大家以后分析该类问题有一定参考,不对的地方欢迎大家拍砖。 一 ANR分类,含如下几种类型: 广播ANR Service ANR ContentProvider ANR Input ANR 面向系统:WatchDog 二 产生ANR原因,如下几种: 主线程耗时操作 主线程被其它线程Block 系统级响应阻塞 系统或进程自身可用内存紧张 CPU资源被抢占 对于这些ANR,先给大家的推荐一下大致分析思路和相关日志,通常发生ANR时,首先去查找对应Trace日志,看看主线程是否在处理该广播或被阻 塞,如果发现上述现象,那么恭喜你,已经很接近答案了。但如果发现堆栈完全处于空闲状态,那么很不幸,就需要扩大参考面了,需要结合log日志进行分析, 日志包括logcat, kernel日志,cpuinfo以及meminfo等

Android Service原理分析之startService(一)

萝らか妹 提交于 2020-12-19 06:28:05
1. Service概述 Service作为Android四大组件之一,在开发过程中非常常用,它虽然没有ui,但是同样可以在后台做很多重要的事情,我们平时使用启动service主要通过startService以及bindService来启动service以便已经相关操作。本文将介绍startService的原理,后续将分别介绍bindService的原理,以及在Android O上对service的新增限制管控。 注:本文基于Android 8.1 2. Service分类 从启动方式上,可以分别通过startService以及bindService启动,两者之间最重要的区别在于bindService可以建立binder连接,更加方便通信。 从运行方式上,可以分为前台service(foregroundService,下面简称fg-service)与后台service,两者的区别在于有前台service的进程对应的优先级会更高,不容易被系统清理掉,但是前台service需要在通知栏里面显示一个常驻的通知。 3. startService时序图 startService的启动大致分为三种情况: 对应进程不存在(先启动进程然后启动service并执行onCreate和onStartCommand) 进程存在但是service不存在

Framework系列-Binder通信流程(一)

戏子无情 提交于 2020-11-02 08:14:10
Binder是Android进程通信过程的机制,也是非常复杂的,整个通信过程涉及到用户态和内核态,从java层到Framework层,到驱动层,以前断断续续的看了不少文章,总是不能看到本质,所以不能表达出原理思想。最近看了几篇文章,写得挺好的,所以趁此将整个过程记录下来,方便后续复习。当然也有理解不到位的,不过大致方向应该没错,想了解更多的可以看后面的链接文章。 分析的源码8.0,驱动源码kernel_3.18 一、涉及源码 \frameworks\base\core\java\android\content\ContextWrapper . java \frameworks\base\core\java\android\app\ContextImpl . java \frameworks\base\core\java\android\app\ActivityManager . java \frameworks\base\core\java\android\os\ServiceManagerNative . java \frameworks\base\core\java\android\app\IActivityManager . aidl \frameworks\base\core\jni\android_util_Binder . cpp \frameworks\ native

Android 10系统下的PSS数值统计不准

旧巷老猫 提交于 2020-08-20 06:50:45
1)Android 10系统下的PSS数值统计不准 ​2)Memory Profiler中的类型内存大小计算 3)Addressable加载Bytes文件在手机上报错 4)使用SBP打Bundle,如何读取AssetBundleManifest 5)GameObject如何释放从Bundle中加载的Asset 这是第215篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。 UWA 问答社区: answer.uwa4d.com UWA QQ群2:793972859(原群已满员) Memory Q:从下图测试的结果来看,Android 10.0的PSS的内存值是平的,没有任何变化。但如果用Android 9.0版本的测试机测试,数值就是正常。初步猜测这个就是Android 10的内存反馈,但到底是否为Bug还不确定。有遇到相同情况的小伙伴吗? A:同样被Android 10坑了,来回答一下原因: ActivityManager的 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids) 变了。 /** <p>As of {@link android.os.Build.VERSION_CODES#Q Android Q}, for regular apps

Android 史上最新最全的ADB及命令百科,没有之一

梦想与她 提交于 2020-08-16 00:31:50
ADB详解及常用命令 一、ADB的认识 1. ADB组成 2. ADB 通信原理 3. ADB连接方式 1) 手机数据线连接 2) USB type-A数据线连接 3) 网络连接 4. 手机IP确认 二、ADB的安装 三、ADB命令 1. adb 普通命令 1) ADB信息 2)操作类 3 ) ADB 远程 4) log 命令 2. adb shell命令 1) adb shell am 2)shell pm 3) shell input 4)设备信息 5)进程、Service及状态 6)shell 文件操作 7)其他命令 四、 KEYCODE表 总结 Android开发对于ADB想来是不会陌生的,对于ADB的相关知识和使用我们需要熟练掌握。 一、ADB的认识 1. ADB组成 Android Debug Bridge,Android调试桥接器,简称ADB,是用于管理模拟器或真机状态的万能工具。说人话就是:ADB是PC和移动终端通信的桥梁,它采用了C/S模型,由三部分组成。 借用一张图: 2. 服务端部分,是运行在开发用电脑上的后台进程,用于管理客户端与运行在模拟器或真机的守护进程通信。 1. adb client(客户端) client是 运行在PC端 的组件,可以在命令行中运行adb命令来调用该客户端,通常的ADB插件、DDMS、豌豆荚等工具都可以调用ADB。

五一以来,国产手机受到cmtwg, nkvhu, qhsz等几款恶意软件肆虐。

扶醉桌前 提交于 2020-08-14 23:03:25
受影响手机包括魅族,中国移动等国产手机。 5月12日开始有人在百度知道提问cmtwg,5月13日mx吧也有人在发贴。 我接到有问题的手机时间更早,大约就是五一之后。 出现问题的几个牌子的国产手机,似乎存在漏洞,对方可以利用4G网络,自动安插它们的软件到你的设备上。 com.wagd.qhsz的dump com.wg.cmtwg的dump 自动安装时间点的日志 1 25 ** 26 ** I ActivityManager: Start proc 20763 :com.android.defcontainer/u0a20 for service com.android.defcontainer/ .DefaultContainerService 2 20763 20780 D DefContainer: Copying /storage/emulated/ 0 /.tm/882a3f6d5466518c3fb5290ada5f2a89 to base .apk 3 25 ** 26 ** I PackageManager.DexOptimizer: Running dexopt (dex2oat) on: /data/app/vmdl533505310.tmp/ base .apk pkg=com.wg.cmtwg isa=arm64 vmSafeMode= false