|
正在做一款锁屏应用。 <service android:name="com.tencent.mm.booter.CoreService" android:process=":push" > </service> 代码如下:
public class CoreService extends Service
implements com.tencent.mm.jni.platformcomm.f, af, bl
{
private ao bZl;
private ac bZm = new ac();
private boolean bZn = true;
public final int bZo = -1213;
private final ai bZp = new e(this);
private com.tencent.mm.modelstat.l bZq = null;
private AddrBookObserver bZr;
private WatchDogPushReceiver bZs;
private WakerLock bZt = null;
private m bZu = new m();
private ay bZv = new ay(new g(this), false);
private void oj()
{
aa.w("MicroMsg.CoreService", "[COMPLETE EXIT]");
bk.Fg().d(3, 10000, "");
bg.onDestroy();
try
{
MMReceivers.AlarmReceiver.D(getApplicationContext());
MMReceivers.AlarmReceiver.B(getApplicationContext());
Alarm.H(getApplicationContext());
label43: aa.appenderClose();
Process.killProcess(Process.myPid());
return;
}
catch (Exception localException)
{
break label43;
}
}
public final void H(boolean paramBoolean)
{
if (!paramBoolean)
{
aa.w("MicroMsg.CoreService", "[NETWORK LOST]");
bk.Fc().cFB = false;
bk.Fd().eJ(0);
bk.Fb().a(10502, "", null);
this.bZn = false;
return;
}
aa.w("MicroMsg.CoreService", "[NETWORK CONNECTED]");
bk.Fc().cFB = true;
boolean bool = this.bZm.oM();
if ((this.bZn) && (!bool))
{
Object[] arrayOfObject = new Object[1];
arrayOfObject[0] = Boolean.valueOf(this.bZn);
aa.d("MicroMsg.CoreService", "network not change or can""t get network info, lastStatus connect:%b", arrayOfObject);
return;
}
if (bool)
bk.Ff().EN();
this.bZn = true;
bk.Fd().eJ(1);
bk.Fb().a(10501, "", null);
if (this.bZt == null)
this.bZt = new WakerLock(getApplicationContext());
if (!this.bZt.isLocking())
this.bZt.lock(14000L);
aa.i("MicroMsg.CoreService", "checking ready, start in 7000ms");
this.bZv.bO(7000L);
}
public final boolean a(int paramInt, byte[] paramArrayOfByte)
{
if (getSharedPreferences("system_config_prefs", com.tencent.mm.compatible.g.l.qi()).getBoolean("settings_fully_exit", true))
{
aa.i("MicroMsg.CoreService", "fully exited, no need to notify worker");
return false;
}
Intent localIntent = new Intent(this, NotifyReceiver.class);
localIntent.putExtra("notify_option_type", 2);
localIntent.putExtra("notify_uin", this.bZl.ES().sd());
localIntent.putExtra("notify_respType", paramInt);
localIntent.putExtra("notify_respBuf", paramArrayOfByte);
localIntent.putExtra("notfiy_recv_time", cj.FD());
localIntent.putExtra("notify_skey", this.bZl.ES().uo());
aa.i("MicroMsg.CoreService", "notify broadcast:" + localIntent.getAction() + ", type=" + paramInt);
try
{
sendBroadcast(localIntent);
return true;
}
catch (Exception localException)
{
while (true)
{
Object[] arrayOfObject = new Object[1];
arrayOfObject[0] = localException.toString();
aa.a("MicroMsg.CoreService", "onNotify hasDestroyed %s", arrayOfObject);
}
}
}
public IBinder onBind(Intent paramIntent)
{
aa.d("MicroMsg.CoreService", "onBind~~~ threadID:" + Thread.currentThread());
return this.bZl;
}
public void onCreate()
{
aa.d("MicroMsg.CoreService", "onCreate~~~threadID:" + Thread.currentThread());
super.onCreate();
if (Build.VERSION.SDK_INT < 18)
startForeground(-1213, new Notification());
Handler localHandler = new Handler(Looper.getMainLooper());
PlatformComm.a(al.getContext(), localHandler);
i locali = new i(this);
locali.om();
ag.a(this.bZp);
if (PlatformComm.cgz == null)
PlatformComm.cgz = this;
bk.a(localHandler);
bk.setContext(getApplicationContext());
bk.a(new bm());
bk.a(new bn());
bk.a(this);
if (this.bZq == null)
this.bZq = new com.tencent.mm.modelstat.l();
bk.a(this.bZq);
this.bZl = bk.Ff();
if (this.bZl == null)
{
aa.i("MicroMsg.CoreService", "autoAuth is null and new one");
this.bZl = new ao(bk.getHandler());
bk.e(this.bZl);
bg.onCreate();
if (bk.Fg() != null)
break label465;
aa.i("MicroMsg.CoreService", "NetTaskAdapter is null and new one");
bk.a(new bi());
label228: if (bk.Fh() == null)
{
aa.i("MicroMsg.CoreService", "NetTaskAdapter is null and new one");
bk.a(new bh());
bk.Fh().cFn = this;
}
at.azE().a(new f(this), null);
String str1 = locali.getString(".com.tencent.mm.debug.server.host.http");
String str2 = locali.getString(".com.tencent.mm.debug.server.ports.http");
String str3 = locali.getString(".com.tencent.mm.debug.server.host.socket");
String str4 = locali.getString(".com.tencent.mm.debug.server.ports.socket");
this.bZl.d(str1, str2, str3, str4);
MMReceivers.AlarmReceiver.D(getApplicationContext());
MMReceivers.AlarmReceiver.C(getApplicationContext());
NetworkInfo localNetworkInfo = ((ConnectivityManager)getSystemService("connectivity")).getActiveNetworkInfo();
if ((localNetworkInfo != null) && (localNetworkInfo.getState() == NetworkInfo.State.CONNECTED))
break label482;
bk.Fc().cFB = false;
bk.Fd().eJ(0);
}
while (true)
{
this.bZr = new AddrBookObserver(this, new Handler());
getContentResolver().registerContentObserver(c.aph(), true, this.bZr);
this.bZs = new WatchDogPushReceiver();
registerReceiver(this.bZs, new IntentFilter("com.tencent.mm.WatchDogPushReceiver"));
return;
aa.w("MicroMsg.CoreService", "autoAuth is not null and reset");
this.bZl.reset();
break;
label465: aa.w("MicroMsg.CoreService", "NetTaskAdapter is not null and reset");
bk.Fg().reset();
break label228;
label482: bk.Fc().cFB = true;
bk.Fd().eJ(1);
}
}
public void onDestroy()
{
aa.d("MicroMsg.CoreService", "onDestroy~~~ threadID:" + Thread.currentThread());
this.bZq.a(10002, null, null);
getContentResolver().unregisterContentObserver(this.bZr);
unregisterReceiver(this.bZs);
super.onDestroy();
oj();
}
public void onRebind(Intent paramIntent)
{
aa.d("MicroMsg.CoreService", "onRebind~~~ threadID:" + Thread.currentThread());
super.onRebind(paramIntent);
}
public boolean onUnbind(Intent paramIntent)
{
aa.d("MicroMsg.CoreService", "onUnbind~~~ threadID:" + Thread.currentThread());
bk.Fc().a(null);
return super.onUnbind(paramIntent);
}
public final void restartProcess()
{
aa.w("MicroMsg.CoreService", "restartProcess");
oj();
}
}
|
|
![]() |
注意内存使用量,内存使用的越多越容易被杀死。 |
![]() |
我知道原因了,
微信这个应用根本没有退出。而是在后台运行着, 微信使用的是bindService,由于应用没有退出。所以不会内存管理器被杀死。 所以,请教一下360的原理。 |
![]() |
用户内存使用的多或少是用户的选择,对于开发者来说,能做的就是保证自己的服务优先不被杀死, |
![]() |
如果是处于前台的程序,内存会受用户操作的影响,但是,当程序处于后台的时候,内存的使用,基本上可以由程序员来控制。 |
![]() 50分 |
android 系统杀程序,一个很重要的判断就是软件系统资源的占用情况。 |
![]() |
最终了解了一下,微信不会杀死的原因是小米系统用的是腾讯管家模块进行关系的,
所以进行内存清理的时候,自带的系统自然不会清理微信的产品了。 但是360手机卫士虽然被清理掉了,但是能自动重启,这点真的很厉害。正在研究中 |
![]() 50分 |
mark一下,等待结果
|
![]() |
我最近也在研究 能不能留下联系方式 互相交流下
|
![]() |
有结论吗?按理说android3.1之后这些应用一旦被杀死,就接收不到系统静态广播了,不知道为什么还有那么多应用能做到开机自启动。
|
![]() |
360向谷歌缴费 对谷歌说请你不要杀死我行不。谷歌说ok 。就这么简单。
|
![]() |
你解决了吗,我也在弄这方面功能
|
![]() |
有结论了吗?最近app也需要这种功能
|
![]() |
试下双服务…………
|
![]() |
大哥,这句是关键startForeground(-1213, new Notification());,谁用谁知道
|
![]() |
请问,问题解决了吗,我发现,用一键清理也干不掉微信,微博都被搞掉了;
微信是怎么做到的呢 |
![]() |
楼主解决了吗
|
![]() |
呃呃 怎么反编译的程序啊,这么厉害 求指教
|
![]() |
网上常见的 都试过了 效果不不是很好 真心搞不懂 为什么有些APP 确实能够在被杀死的情况下 自动启动 谁知道怎么做 麻烦说下 交流下972632491
|
![]() |
其实这个问题早就解决了,只不过忘了回来解释一下了。。
微信杀不掉的原因并不是它本身用了什么特殊的技术,只是因为和小米系统签订了合同,所以不会被杀掉,有兴趣的人可以做个试验,做个工程和微信一样的主包名,然后服务名也一样的话,看看是否会被杀掉。 想解决这方式,两种方法 第一,引导用户赋予应用自启动的权限,并且修改 service方法中 onStartCommand的flags=1,这样即使被杀掉,也会在被杀掉后重新自启动的。 第二,把应用刷成系统级的应用。 |
![]() |
楼主能说的详细点么? 最近也遇到类似的问题了。试了很多种方式, miui自带的还是能把我的后台service杀掉。引导用户赋予应用自启动的权限? 这个要怎么实现?
|
![]() |
经过测试发现,360清理大师 : 只有微信电话本杀不掉里面的一个服务外,其他的应用,用360清理大师都可以杀掉服务.
|
![]() |
能发下源码不 楼管lys221221@163.com
|
![]() |
楼主 能发下源码吗?最近也在研究这个问题 弄了几天了 一直没有点头绪,请教一下,希望分享下,谢谢 QQ:809108038 邮箱809108038@qq.com 谢谢楼主了
|
![]() |
看看,正遇到这个问题
|
![]() |
请问楼主这个问题解决了嘛?
|
![]() |
楼主可以给一下具体的资料看看怎么实现的原理吗?1324694009@qq.com.O(∩_∩)O谢谢。
|
![]() |
楼主可以发一份参考代码给我吗?1689606425@qq.com ,最近项目也需要这方面的知识
|
![]() |
招标求解决方案!
|
![]() |
对你说的这两点我说一下,首先,微信不是系统级应用,否则是不能删掉的。 |
![]() |
如果一个系统或者360这样的软件,一键清理清理掉了微信qq,那么你第一反应是什么,作为一个用户,要么我会重刷系统或者我会直接写在了360,我还是觉得白名单的问题的存在
|
![]() |
http://www.expreview.com/39438.html,这篇文章大家知道不,但是也不知道什么实现方法,不知道真假也不知道怎么弄
|
![]() |
楼主,可以给一份具体的实现代码吗,619784760@qq.com 最近也一直在看这个,网上看了很多都没解决
|

