`
OliveExcel
  • 浏览: 71605 次
文章分类
社区版块
存档分类
最新评论
文章列表
以下通过touch input为例, 通过时序图, 描述input event在frameworks的传递: 1. [sequence_diagram]_read_and_process_touch_event   2. [sequence_diagram]_disptach_touch_event    
之前写过一篇文章:  Android 3.1后, 新安装的以及用户强行停止的apk, 无法监听广播的问题   今天终于研究了一下原理, 把代码执行逻辑贴上来: ContextImpl.sendBroadcast() ActivityManagerNative.getDefault().broadcastIntent() ActivityManagerService.broadcastIntent() ActivityManagerService.broadcastIntentLocked() Act ...
碰到个问题, 应用在收到BOOT_COMPLETED广播的时候, 往往已经进入桌面了. 然后有同事提出来: 可以收PRE_BOOT_COMPLETED广播啊. 于是就研究了一下这个广播的发送.   ======================================== 本文地址: http://oliveexcel.iteye.com/blog/2302947 ========================================   一切从SystemServer.main()开始: SystemServer.main() -> SystemS ...
在6.0的工程下面, 尝试通过mm / mmm编译单个module, 但是发现编译完后, 不产生classes.jar. 请教过后, 得到这个方法: LOCAL_JACK_ENABLED := disabled
写了段代码, 无论如何无法正常执行: File dir = Environment.getExternalStorageDirectory(); ... File[] children = dir.listFiles(); // children取出来是null 然后加了判断, 发现dir不可读: File dir = Environment.getExternalStorageDirectory(); ... if (dir.canRead()) { // dir不可读 File[] children = dir.listFiles(); ... } 难道 ...
20180530更新: 在build.gradle的dependencies中添加以下内容即可: compile 'com.android.support:appcompat-v7:26.1.0'   ================================ 以下为旧版本 ================================   在IDEA里尝试使用Android FloatingActionButton(即FAB), 碰到各种问题. 记录于此:   1. FAB库位置:     support库下的design工程   2. FAB库依赖:   ...
疑问与解答: 1. 在AOSP编译过程中, 每个module, 都需要通过Android.mk, 配置编译module需要依赖的lib. 这个配置一般通过 LOCAL_JAVA_LIBRARIES 或者 LOCAL_STATIC_JAVA_LIBRARIES 实现; 2. 某些module, 如果不依赖特定的lib, 那么上述lib依赖关系的字段是可以不写的. 但是在这些module在编译过程中, 明显依赖了frameworks的一些接口, 但为什么不需要声明依赖关系? 3. 答案很简单很无聊: 系统帮你指定了默认的lib呗.   需求: 那么问题来了, 如果想往AOSP的默认l ...
20160617更新: 使用Android 6.0的NDK重新编译so文件, 即可解决问题.   ===================================================================   20151017内容: 首先贴一下这个问题的官方答复: https://code.google.com/p/android-developer-preview/issues/detail?id=3028   先介绍一下这个问题的背景 (没兴趣看的, 可以直接跳到下文的问题解决方案): 1. 这个问题出现在loadLibrary()的过程中 ...
Android的Theme是由各种attr组合而成, 每个attr对应了这个属性的一个引用, 这个引用又可以是各种东西.   在某些情况下, 我们需要获取非自定义的主题下某个属性的内容 (比如拿到系统默认的配色colorAccent), 操作方式举例一则: int defaultColor = 0xFF000000; int[] attrsArray = { andorid.r.attr.colorAccent }; TypedArray typedArray = context.obtainStyledAttributes(attrsArray); int accentColor ...
一般来说, View是需要在绘制到界面之后才能取到它的宽度 / 高度. 如果需要在绘制之前就取到这些值, 则需要主动调用View的measure方法, 来提前计算其尺寸. 如下: final DisplayMetrics dm = mContext.getResources().getDisplayMetrics(); viewToMeasure.measure( View.MeasureSpec.makeMeasureSpec(dm.widthPixels, View.MeasureSpec.AT_MOST), View.MeasureSpec.ma ...
需求: 在frameworks/base/core/java下新增了aidl文件, 需要将其加入至编译   实现: 1. 由于frameworks/base/core/java路径下的内容, 最终会编译至framework.jar, 故需要修改framework.jar的编译配置, 即frameworks/base/Android.mk 2. 无论*.java还是*.aidl, 都是通过以下方式加入编译的: LOCAL_SRC_FILES += bla-bla     java文件可以通过以下方式遍历得到: $(call find-other-java-files,[包 ...
需求: 集成一个新的apk模块到Android系统镜像.   实现: 这里要分两种情况, 一种是带源码的, 一种是不带源码的. 1. 无论带源码与否, 都需要在工程目录下建议Android.mk文件, 并在其中指定模块名称: # 一种写法 LOCAL_PACKAGE_NAME := [模块名] # 另一种写法 LOCAL_MODULE := [模块名]  2. 带源码的, 需要使用以下方式将源码加入编译: LOCAL_SRC_FILES := [源码路径]     不带源码的, 若是以apk形式存在, 则: LOCAL_SRC_FILES := [apk路径]/[a ...
需求: 有一三方提供的SDK, 以jar包形式存在, 对Context等frameworks内容有依赖. 现需要将其编译进系统, 并供framework.jar中的类调用.   实现: 1. 在frameworks/base/Android.mk中加入对jar包的引用: include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := <my lib name>:<my lib path and name> include $(BUILD_MULTI_PREBUILT)  2. 在编译frame ...
需求: 要求得到某个Activity的启动时间   实现: 1. adb shell下面存在am命令, 使用start -W -n参数, 即可获取Activity启动时间的信息; 2. 上述Activity的启动信息中, 包含了本次启动时间.   ================================= 需求变更的分割线  ...
帮同事看一个问题: 工程下面同时触发两个的AsyncTask, 预期可以同时执行, 但实际结果它们是顺序执行的.   思不得解, 百度一把, 看到有人问怎样控制多AsyncTask的运行优先级, 然后有人回复了一行代码: AsyncTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, null); 虽然代码完全没有解决问题, 但是看得出, 这里有一些并发设计相关的东西AsyncTask.SERIAL_EXECUTOR. 它是一个顺序Executor, 并且一次只能执行一个线程. 代码中定义如下: /** * An {@link Ex ...
Global site tag (gtag.js) - Google Analytics