网站建设布局结构,公众号首图制作网站,流量网站怎么盈利,取消网站备案制度android 保活的一种有效的方法
为什么要保活
说起程序的保活#xff0c;其实很多人都觉得#xff0c;要在手机上进行保活#xff0c;确实是想做一些小动作#xff0c;其实有些正常的场景也是需要我们进行保活的#xff0c;这样可以增强我们的用户体验。保活就是使得程序…android 保活的一种有效的方法
为什么要保活
说起程序的保活其实很多人都觉得要在手机上进行保活确实是想做一些小动作其实有些正常的场景也是需要我们进行保活的这样可以增强我们的用户体验。保活就是使得程序常驻内存这种程序不容易被杀或者在被杀以后还能完成自我启动相当于有个监控程序一样当我们的程序退出以后能帮我们在拉起来。
保活方式
保活的方式有很多但是大部分的效果并不是很好如果有看过其他的一些文章我们应该有了解双进程保活一像素保活so保活关播保活等。
但是这些保活方式还是很容易被杀。根本无法对抗一些高级的查杀软件或者是 adb shell am force-stop XXX。
如果能够抗住force-stop 那么基本上也就能在内存上站住脚了。
应用通知保活
通过了那么多的试验后发现应用通知保活 这种方式是最简单而且支持的厂商也最多。唯一的缺点就是需要用户开启权限。
如果有用过一些push消息以后我们会发现这些push消息能够推送到手机上当我们点击提示的时候会调到我们的应用中如果利用push的消息发现手机和我们断开了我们往手机里面发送一个push消息是否可以把我们的应用拉起来 下面把程序实现出来看看他能不能过扛得住force-stop
新建一个 NotificationService
open class NotificationService : NotificationListenerService() {private val TAG NotificationServiceoverride fun onCreate() {super.onCreate()}override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {return Service.START_STICKY}override fun onBind(intent: Intent?): IBinder? {return super.onBind(intent)}override fun onRebind(intent: Intent?) {super.onRebind(intent)}override fun onUnbind(intent: Intent?): Boolean {return super.onUnbind(intent)}override fun onListenerConnected() {super.onListenerConnected()}override fun onListenerDisconnected() {super.onListenerDisconnected()}override fun onNotificationRemoved(sbn: StatusBarNotification) {super.onNotificationRemoved(sbn)}override fun onNotificationPosted(sbn: StatusBarNotification) {}override fun onDestroy() {super.onDestroy()}
}
NotificationService 是空的我们这里不做什么事情如果你想做一些启动其他服务的事情你也可以在这里onCreate进行。
在AndroidManifest.xml 中加入 NotificationService 服务注册这个服务到系统中。 serviceandroid:name.service.NotificationServiceandroid:exportedtrueandroid:permissionandroid.permission.BIND_NOTIFICATION_LISTENER_SERVICEintent-filter android:priority999action android:nameandroid.service.notification.NotificationListenerService //intent-filter/service
就是这么简单没有几行代码就可以实现一个保活的程序。我们看看效果如何
记住一定要到设备和应用通知 把我们的程序打开来。 我们的demo程序为com.first66.keepmealive 一开始的时候程序是活着的我们需要制造一个意外让程序结束这个意外我们直接用adb 命令来干掉com.first66.keepmealive 。
adb shell am force-stop com.first66.keepmealive发现com.first66.keepmealive 先结束以后后面马上又自己跑起来了。这个过程执行了两次两次app都能够自己启动起来。
如果需要程序代码的话可以和我进行私信联系。