小米10月工作记录 工作记录
小米10月工作记录
2015.10.16
进程之间谈通信,线程之间才谈同步。
所以进程间通信大多不需要锁,需要的锁也是文件锁之类的“大锁”,并不需要条件变量、互斥锁这些机制来同步,进城之间对资源的使用由操作系统的进程调度部分来完成。线程需要互斥锁的原因是,除了线程栈里的东西其他都是共享的,需要你自己来完成变量级别的同步。
2015.10.22
如何才能完全杀死程序,一定要 菜单—》长按—》结束运行 才可以。
心跳对齐,如何对齐到小米PushService的心跳。
2015.11.2
执行某个目录下的 class 文件,限定类路径为-cp
,类名为
java -cp /Users/chengsimin/Desktop/ MyLogFilter
用命令行编译工程并导出jar,使用脚本实现。
shell脚本学习
使用
str=`ls -al` 能将ls的内容赋值给str。
2015.11.17
jni 问题解决
javah 生成 xxx.h
ndk-build 脚本
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APP_APPLICATION_MK=./Application.mk APP_ABI=all
jni 类型对应关系图
jni 类型传递的好文章,积累123都可以看一下,一般jni基础就有了
http://blog.csdn.net/qinjuning/article/details/7607214
如果一个app使用的 arm64-v8a 架构处理器的so,那么必须所有的so都要支持这种,app不会在在arm64-v8a下找不到时去armeabi-v7a去找,它只会用同一系列的。
解耦神器,EventBus
一个诡异的现象查了半天,发现是加锁问题,有一个单例,在子线程 getInstance new 这个对象时,获得这个对象的锁,而这个对象的构造方法中会 bind Service,而且onServiceConnected没有回调时会一直循环bind。按理讲只要主线程有空就binder成功了,而恰好这个主线程也在尝试获取这个对象的单例,因为这个锁被子线程只持有者,所以就一直阻塞了。出现了死锁。
如何预防死锁问题。
几个聊的Application的初始化方法一定要判断进程名初始化,否则许多变量都跑到milink的remote进程中,占着内存。
使用 adb shell meminfo com.milink.sdk.demo:remote
查看发现
blog comments powered by Disqus