01 October 2015

小米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