android
head_first545
这个作者很懒,什么都没留下…
展开
-
system_server native库的启动过程
先看system_server对应native代码位置, frameworks\base\services\jni Android.mk 里有包含所以jni cpp,对应会编译成libandroid_servers.soLOCAL_MODULE:= libandroid_serversinclude $(BUILD_SHARED_LIBRARY)onload.cpp里会实现:extern原创 2016-06-30 15:21:30 · 648 阅读 · 0 评论 -
android framework broadcast 原理
apk通过context 发送broadcast有如下接口: sendBroadcast:普通广播 sendOrderedBroadcast:有序广播 ,串行化执行。接下来看下framework的实现, 主要有两个步骤: 1. 把broadcast添加到BroadcastQueue的receivers ArrayList中即enqueue。 final ArrayList m原创 2016-08-04 22:16:42 · 2529 阅读 · 1 评论 -
Android cgroup 节点
root@l:/ # cat proc/cgroups subsys_name hierarchy num_cgroups enabledcpu 2 2 1 cpuacct 1 131 1 freezer 0 1 1 debug 0 1 1root@l:/sys/fs/原创 2017-05-22 17:25:06 · 1560 阅读 · 0 评论 -
Android kswapd-->lowmemorykiller启动和扫描过程
@kernel/mm:module_init(kswapd_init)static int __init kswapd_init(void){ int nid; swap_setup(); for_each_node_state(nid, N_MEMORY) kswapd_run(nid); if (kswapd_cpu_mask == NULL)原创 2017-05-22 15:04:20 · 3431 阅读 · 0 评论 -
android source code download from tsinghua
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.2_r17 –repo-url=https://gerrit-google.tuna.tsinghua.edu.cn/git-reporepo s原创 2017-06-17 15:50:51 · 635 阅读 · 0 评论 -
Integer.valueOf 返回对象的差别
System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); --> **TRUE** System.out.println(Integer.valueOf("128")==Integer.valueOf("128")); --> **FALSE** 原因是因为Integer内部有缓存-128到127的小对象。原创 2017-05-12 14:56:06 · 640 阅读 · 0 评论 -
ActivityManagerService native crash处理流程
在@AMS中会注册接收native crash的监听器, 以便在native进程crash时清理恢复app的生命周期等事项。 开机AMS在启动时注册监听:mActivityManagerService.systemReady(new Runnable() { @Override public void run() {原创 2017-03-06 17:51:12 · 1023 阅读 · 0 评论 -
alarm
alarm type :/** * Alarm time in {@link System#currentTimeMillis System.currentTimeMillis()} * (wall clock time in UTC), which will wake up the device when * it goes off. */ pub转载 2016-09-18 15:10:16 · 381 阅读 · 0 评论 -
System server里创建常见的几个thread
android.ui :@WatchDog.java // Add checker for shared UI thread. mHandlerCheckers.add(new HandlerChecker(UiThread.getHandler(), "ui thread", DEFAULT_TIMEOUT)); pri原创 2016-08-22 11:08:26 · 3382 阅读 · 1 评论 -
PMS 笔记
@PMS PMS中常见的锁: // Lock for state used when installing and doing other long running // operations. Methods that must be called with this lock held have // the suffix “LI”. final Ob原创 2016-09-03 16:02:55 · 471 阅读 · 0 评论 -
libandroid_server.so Android.mk
frameworks/base/services/Android.mknative library=============================================================include $(CLEAR_VARS)LOCAL_SRC_FILES := LOCAL_SHARED_LIBRARIES :=include all the jni subdi原创 2016-08-18 11:45:07 · 724 阅读 · 0 评论 -
android 6.0 activitymanagerservice keyword
在AMS中service默认处理timeout时间, 如果超过就会引发ANR。 @ActiveServices.java // How long we wait for a service to finish executing. static final int SERVICE_TIMEOUT = 20*1000; // How long we wait for a ser原创 2016-08-27 20:33:06 · 349 阅读 · 0 评论 -
android cygwin 源码下载,国内镜像
东软信息学院镜像站: http://mirrors.neusoft.edu.cn/cygwin/ http://mirrors.neusoft.edu.cn/android/repository/ 中科大镜像: http://mirrors.ustc.edu.cn/ 清华大学镜像: https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/原创 2016-08-02 13:47:53 · 1076 阅读 · 0 评论 -
Activity manager service :activity 启动流程中process的切换过程
launcher 等把对应startActivity的请求发送到AMS后, 最终进入startProcessLocked @AMS, Process.ProcessStartResult startResult = Process.start("android.app.ActivityThread", app.processName, uid, uid,原创 2016-06-29 20:42:14 · 1142 阅读 · 0 评论 -
android alarm driver &framework 关键流程
android alarm driver如下: alarm-dev.c@\kernel\drivers\staging\android static int __init alarm_dev_init(void){ int err; int i; err = misc_register(&alarm_device); if (err) retur原创 2016-07-01 10:53:41 · 1025 阅读 · 1 评论 -
(官网搬运)android studio sdk 最新下载地址 2016.7.23 (迅雷可用)
官网搬运的android studio和sdk的下载链接, 不能访问翻墙的可以用迅雷下载。 PlatformAndroid Studio packageSizeWindowsandroid-studio-bundle-143.2915827-windows.exeIncludes Android SDK (reco转载 2016-07-23 17:46:57 · 1467 阅读 · 0 评论 -
alarm 闹钟开机时判断
/device/qcom/common/init/init_msm.c:{ char *alarm_file = "/proc/sys/kernel/boot_reason"; char buf[BUF_SIZE]; char tmp[PROP_VALUE_MAX]=""; property_get("ro.boot.alarmboot", tmp); if(re原创 2016-08-29 22:41:09 · 1404 阅读 · 0 评论