मुझे एंड्रॉइड ओ पर चल रही मेरी पृष्ठभूमि Service
के साथ एक अजीब व्यवहार का सामना करना पड़ता है।एंड्रॉइड ओ: पृष्ठभूमि निष्पादन सीमाओं द्वारा सेवा बंद नहीं की गई
मेरे नमूना एप्लिकेशन 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 के कारण)। लेकिन परिभाषित अवधि के बाद पृष्ठभूमि संचालन सीमा के कारण एंड्रॉइड ओएस द्वारा सेवा नहीं मारा गया है। ऐसा लगता है कि मेरी सेवा लगातार चल रही है और ओएस इसे रोक नहीं देता है।
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
क्या किसी को भी एक ही समस्या का सामना करना पड़ा है या कोई स्पष्टीकरण है?
अपने targetSdkVersion क्या है? –
targetSdkVersion 26 – Christopher
मैं एक ही प्रश्न पोस्ट करने वाला था। मैं वही व्यवहार देख रहा हूं। क्या यह एक बग है? –