残页

Results 114 comments of 残页

优点:使用方便,然后没了 缺点:在各版本系统差异极大,比如1.6时只能串行执行,2.1时改成并行执行,3.0默认又改成了串行,想要并行执行需要使用默认的线程池;5.1以下AsyncTask只能在主线程开启,4.x(具体版本记不清了)以下初始化(指执行时)也必须在主线程;官方文档上说onPreExecute方法是在主线程中执行的,但是查看源码发现竟然是在execute()里就执行了; 所以自定义一个比较好

Binder:Binder是android里一种自带的进程通信方式,我们常用的aidl、广播等方式都是基于binder实现的; binder采用C/S架构,server需要向安卓里的ServiceManager进程注册(该进程的server引用由一个特殊的方式得到,不会出现自相矛盾的情况),由该进程管理;client则通过ServiceMagager获取到server的代理引用,然后向其发起通信 binder的优点:相对于linux自带的一系列通信方式,binder是性能和安全性的折中实现(如其他方式都可以轻易伪造调用者的身份信息,而binder不行) binder有一个特殊的binder线程池,专门用来处理binder事务 binder淡化了进程的边界,整个系统仿佛运行在同一个进程中,而又有单进程不具有的安全性等 推荐文章:[Binder学习指南](http://weishu.me/2016/01/12/binder-index-for-newer/)

双重反射,即利用反射调用反射API,这个时候系统进行栈回溯,发现直接调用者是反射API,反射API也是系统API,就直接通过了 (我曾经在1月的时候贴吧发帖说了这个绕过方法,之后被大佬看见转了出去,然后我贴吧的贴就被系统吞了...申诉4次没过,fuck)

@ChaosOctopus 你知道你在说什么吗?我甚至连一句正确的话都找不出来

楼上都说的差不多了,这里加个奇技淫巧: 有些时候你的应用内存可能保持在gc临界点上,这个时候可能发生很多的无意义gc,可以通过反射` VMRuntime `的 ` setTargetHeapUtilization ` 方法调整 ~~还有就是有些时候系统可能会频繁裁剪你的应用的堆内存,让你的应用申请内存时引发大量的gc等操作,可以反射 ` java.lang.Daemons ` 强制停止堆内存裁剪线程,完事以后再行启动~~ 刚刚看了下9.0的源码,发现堆裁剪已经和其他堆处理操作统一放在` HeapTaskDaemon ` 里执行了,强行停止会影响到其他......

> Why does `this` cause a race? I don't think ignoring it is the right thing to do. https://github.com/topjohnwu/Magisk/blob/74ff652f7afd7fd649b517c9741f03fa74a56b58/app/shared/src/main/java/com/topjohnwu/magisk/utils/APKInstall.java#L55-L63

hook 了什么方法?调用栈里看起来没有 pine 的痕迹 另外最新是 0.2.8 可以试试升级一下

我怎么找不到你的繁体中文放在哪……

Can you try the latest CI build and see if the issue is resolved? https://github.com/topjohnwu/Magisk/actions/runs/8855504814