能力值:
( LV2,RANK:10 )
|
-
-
2 楼
友情帮顶
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
唉 别提了。到现在了 也就你一个人回复。
试了N种办法 都是 退出后 进程 和 线程 全部被终止
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
实在不行 谁能告诉我 怎么样 才能让自己的广播不被屏蔽啊。 尼玛,连个广播都给我屏蔽掉了 这样下去 谁还能开发APP了?雷军个死太监
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
已经找到 程序 调用的那个函数了 forceStopPackage 只要把自己的包名过滤掉就好了
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
难道程序员都是为了吃口牛肉就要先养一头牛吗?还是养了牛另有他用?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
不是很明白您的意思。我现在 为了这个问题 都找了 一夜了 。
目前 可能的办法 也只是 进程注入 和 删除 调用的那个系统的APP了
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
1.用AlarManager,不断间隔的给增加发送消息,确认Service的状态是否正常,否则重启。
2.监控多个状态,如开关机,收发短信,屏幕开关,应用程序被关闭,卸载,网络状态等接受消息的机会进行自检。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
可能是我说的不太清楚。只要调用了上面的那个终止进程的方法之后,会把这个进程附属的 一切全部清空。包括了 定时器、开的线程、后台服务 全部被终止了。而且更狠的是 他会把你的APP 状态设成 stopped 和 刚安装一样。这个时候 APP 是接收不到任何系统广播的 也就无法完成自启。
不过不管怎么说,还是很感激你回复
|
能力值:
( LV3,RANK:20 )
|
-
-
10 楼
创建ServicesAAAAAAAAAAA,其创建进程BBBBBBBBBBBBBB。进程BBBBBBBBBBBBB被关闭的时候,是否ServicesAAAAAAAAAAA也会被关闭?
这个对付359手机安全助手和QQ安全助手是可行的,小米盒子就不知道了。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
有一个办法就是用jni
创建一个守护进程,守护进程派生一个子进程,并让守护进程进入状态D(阻塞状态)
然后就可以放心啦
所有的工作在子进程中完成
因为守护进程进入状态D,系统无法kill他(kill -9也不行)
而系统清楚进程的时候是先父后子,这样就可以避免子进程被kill了
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
全部关闭
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
为什么要用JNI创建呢?普通的不行?
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
简单来说,就是要提高自己进程的权限,这样就不会被随随便便杀掉了。
第一步(不建议加,可忽略)
让你的service是系统进程,例如
<service android:name="com.example.service.MyService" android:process="system" />
第二步
让你的UID为1000,也就是和System共享ID
方法很简单,AndroidManifest.xml中的manifest标签下加一个属性android:sharedUserId="android.uid.system",例如
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example" android:versionCode="1" android:versionName="1.0.0" android:sharedUserId="android.uid.system" >
第三步,最关键
APK编出来后,用signapk.jar和platform的key对你的APK重新签名。
signapk和platform的key(有两个文件,platform.pk8和platform .x509.pem)都是Android源码下面现成的,如果楼主没有Android源码,这三个文件也可以在网上找到。
当然,如果楼主有Android源码,直接在Android.mk里面指定LOCAL_CERTIFICATE为platform,然后mm就可以了。
需要注意的是,楼主需要保证自己的Service健壮性,因为成为加了android:process="system"而成为system进程之后,你的Service挂掉,将会导致整个系统Crash,对于用户来说就是看到开机动画重新跑一遍。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
普通的进程不行,因为java我还不知道任何方法可以阻塞进程
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
另外提升权限可以尝试修改/proc/<pid>/oom_adj
写入一个-16,即可将制定pid的进程提升到系统级别的优先级
我测试过,开启应用,设置后,一般不会kill掉这样的进程
另外启动其他应用,小米会最后kill该进程来释放内存空间
|
能力值:
( LV3,RANK:20 )
|
-
-
17 楼
写adj除非是root才行
$ ll /proc/xxx/oom_*
-rw-r--r-- root root 0 2015-03-06 15:47 oom_adj
-rw-r--r-- root root 0 2015-03-09 11:14 oom_score_adj
想把process指定到system,除非是shareUserId到android.uid.system,即签名要用OEM厂商的platform签名,这个第三方应用是不可能的。
第三方常用的方式是,前边有人已经讲过了:daemon进程,这些都是C的接口,fork^2/setsid 之类的,java层无类似的封装接口,当然得在JNI里边做了;sogou、360都这样干的
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
如果系统直接kill 子进程呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
JNI怎么创建阻塞进程?NFS需要root,其他方法触发Uninterruptible Sleep也几乎不可能
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
楼主问题解决了吗
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
系统是按照先父后子的顺序kill的
不过最新的Android版本已经解决了这个问题,已经无法用任何方式阻止kill了
最新的小米系统可以kill一切普通用户进程,双进程守护也不行
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
使用vfork函数即可将父进程切到阻塞状态
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
这个D状态能被kill掉
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
有可能的话, 写个 android 上的驱动, 然后 jni 调用驱动, 驱动里面死锁不返回. 估计就杀不掉了.
我以前写 linux 下的驱动, 碰到这样的情况, 只有重新启动机器
|
能力值:
( LV3,RANK:20 )
|
-
-
25 楼
hook system service 进程劫持packagemanager找到forceStopPackage函数地址替换掉。
|
|
|