android后台进程限制,Android O:服务未被后台执行限制停止

我在

Android O上运行后台服务时遇到一种奇怪的行为.

我的示例应用使用了targetSdkVersion 26

我有一个简单的服务,只打印出一些状态信息,并使用START_STICKY重新创建:

class ServiceTest : Service() {

companion object {

private val TAG = "ServiceTest"

fun buildIntent(context: Context): Intent {

return Intent(context, ServiceTest::class.java)

}

}

override fun onBind(p0: Intent?): IBinder? {

return null

}

override fun onCreate() {

super.onCreate()

Log.d(TAG, "onCreate")

}

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {

Log.d(TAG, "onStartCommand: startId = " + startId)

return START_STICKY

}

override fun onDestroy() {

Log.d(TAG, "onDestroy")

super.onDestroy()

}

}

该服务在活动中启动:

startService(ServiceTest.buildIntent(applicationContext))

当我启动服务并通过按后退按钮离开应用程序时,一切都按预期工作:

08-17 16:30:25.182 8980-8980/de.continental.android.androidoservicetest D/ServiceTest: onCreate

08-17 16:30:25.184 8980-8980/de.continental.android.androidoservicetest D/ServiceTest: onStartCommand: startId = 1

08-17 16:31:26.799 900-924/? W/ActivityManager: Stopping service due to app idle: u0a141 -1m1s629ms de.continental.android.androidoservicetest/.ServiceTest

08-17 16:31:26.804 8980-8980/de.continental.android.androidoservicetest D/ServiceTest: onDestroy

但是,如果我开始服务;通过按下后退按钮离开应用程序,最后通过将其移开,从最近的应用程序列表中删除应用程序,我的服务按预期重新启动(由于START_STICKY).但是,在定义的一段时间后,由于后台操作限制,Android OS不会杀死该服务.似乎我的服务一直在运行,操作系统并没有阻止它.

08-17 16:23:13.090 8914-8914/de.continental.android.androidoservicetest D/ServiceTest: onCreate

08-17 16:23:13.091 8914-8914/de.continental.android.androidoservicetest D/ServiceTest: onStartCommand: startId = 1

08-17 16:23:18.600 900-3234/? W/ActivityManager: Scheduling restart of crashed service de.continental.android.androidoservicetest/.ServiceTest in 1000ms

08-17 16:23:19.635 900-924/? I/ActivityManager: Start proc 8980:de.continental.android.androidoservicetest/u0a141 for service de.continental.android.androidoservicetest/.ServiceTest

08-17 16:23:20.158 8980-8980/? D/ServiceTest: onCreate

08-17 16:23:20.160 8980-8980/? D/ServiceTest: onStartCommand: startId = 3

有没有人遇到同样的问题或有解释?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值