- 博客(7)
- 资源 (9)
- 收藏
- 关注
原创 关于跨进程的观察者模式
记得以前面试别人时,我总喜欢问观察者模式分别在跨线程,跨进程,跨设备时该如何实现?印象中没几个人能完全答上来,而本文要讨论的就是跨进程的观察者模式。观察者模式通常就是注册回调到要观察的对象,当观察者和被观察者不在一个进程,回调就要跨进程传递。据我所知,Android中能跨进程传递的除了数据之外,就只有Binder了,所以这个回调要以Binder的形式跨进程传输。观察者传入回调的 Stub,被观
2016-02-28 09:31:13 2920
原创 一件挺有意思的事,关于数据校验
说个有意思的事,我妈晚上打电话向我求助,说她请了个人帮他收账,问我有不有什么办法能让她知道哪些账收回来了,哪些没有收回来。我一听就笑了,你要收哪些账都一条条列出来,收回来一笔就用红笔划掉,最后没有划掉的不就是没收回来的么。她说不行,因为收账的人和她一起办公的,可能会趁她不注意偷偷地用红笔划掉。这还真是个事,我说你用电脑记,给电脑上个密码不就行了,她嫌太麻烦。我又说你给本子锁在抽屉里吧,她说这样像防
2016-02-17 11:09:13 1223
原创 如何拦截Activity的启动(二)
本文我们将以一个工程为例,验证Hook Activity的可行性。我们的目标如下: - 指定插件Apk路径,启动插件 - 插件内部可启动Activity - 插件可作为独立App启动首先新建插件工程,和正常APP一般无二,没有任何特别的地方。所有的Activity都是从android.app.Activity继承,可以安装并运行。接下来新建宿主工程,并将插件Apk用adb push到宿主
2016-02-16 18:21:11 2710 2
原创 关于Handler的拦截
为什么要Hook Handler?Android系统中存在大量Handler,我们要改变系统的某些行为就需要Hook掉一些关键节点的Handler,为此,我们要清楚Handler的工作原理。先做一个实验来看看Hook Handler的效果,如下:public class MainActivity extends Activity { private Button mBtnShow; p
2016-02-16 11:14:22 2761
原创 如何拦截Activity的启动(一)
要把正常的apk当做一个插件启动起来,首先我们拿到这个插件的Launcher Activity,然后启动宿主APP中的Proxy Activity,在这里面调用插件的Activity的生命周期回调。结果会报Null Pointer Exception,原因在于调用插件Activity的onCreate时会调用到super.onCreate,里面需要用到的一些上下文没有初始化过,所以为null。这里
2016-02-15 13:57:09 3167
原创 如何拿到插件Apk的Intent Filter?
加载插件时需要获取到插件APK的详细信息,比如AndroidManifest.xml中注册的四大组件。Android SDK提供了接口,如下:PackageManager pm = getPackageManager();PackageInfo packageInfo = pm.getPackageArchiveInfo( apkFile.getAbsolutePath()
2016-02-03 22:51:14 2430 1
原创 Android单例模式
看到一段单例模式的代码,觉得挺有意思,如下:public abstract class Singleton<T> { private T mInstance; protected abstract T create(); public final T get() { synchronized (this) { if (mInstance =
2016-02-01 11:01:28 900 1
极其强大的C语言学生成绩管理系统(3000行代码)
2012-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人