Android应用保活实践,安卓framework开发书籍

本文详细介绍了Android应用的保活技术,包括检查屏幕状态、双进程守护和使用JobScheduler。通过创建本地服务播放无声音乐,绑定远程服务,以及利用JobService在特定条件下执行后台任务,以保持应用在后台运行。
摘要由CSDN通过智能技术生成

unregisterReceiver(br)
} catch (e: IllegalArgumentException) {
}
super.onDestroy()
}

/**

  • 检查屏幕是否点亮
    */
    private fun checkScreenOn() {
    val pm = this@OnePixelActivity.getSystemService(Context.POWER_SERVICE) as PowerManager
    val isScreenOn = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
    pm.isInteractive
    } else {
    pm.isScreenOn
    }
    if (isScreenOn) {
    finish()
    }
    }
    }

#####2.双进程守护
定义一个本地服务,在该服务中播放无声音乐,并绑定远程服务。

class LocalService : Service() {
private var mediaPlayer: MediaPlayer? = null
private var mBilder: MyBilder? = null

override fun onCreate() {
super.onCreate()
if (mBilder == null) {
mBilder = MyBilder()
}
}

override fun onBind(intent: Intent): IBinder? {
return mBilder
}

override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
//播放无声音乐
if (mediaPlayer == null) {
mediaPlayer = MediaPlayer.create(this, R.raw.novioce)
//声音设置为0
mediaPlayer?.setVolume(0f, 0f)
mediaPlayer?.isLooping = true//循环播放
play()
}
//启用前台服务,提升优先级
if (KeepLive.foregroundNotification != null) {
val intent2 = Intent(applicationContext, NotificationClickReceiver::class.java)
intent2.action = NotificationClickReceiver.CLICK_NOTIFICATION
val notification = NotificationUtils.createNotification(this, KeepLive.foregroundNotification!!.getTitle(), KeepLive.foregroundNotification!!.getDescription(), KeepLive.foregroundNotification!!.getIconRes(), intent2)
startForeground(13691, notification)
}
//绑定守护进程
try {
val intent3 = Intent(this, RemoteService::class.java)
this.bindService(intent3, connection, Context.BIND_ABOVE_CLIENT)
} catch (e: Exception) {
}

//隐藏服务通知<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值