উপর অভিপ্রায় হ্যান্ডেল startCommand ব্যবহার করে সেবার।
stopForeground(true)
এই কলটি অগ্রগামী অবস্থা থেকে পরিষেবাটি সরিয়ে ফেলবে , আরও মেমরির প্রয়োজন হলে এটি হত্যা করতে দেওয়া হবে। এটি পরিষেবাটি চালানো থেকে থামায় না । তার জন্য, আপনাকে স্টপসেলফ () বা সম্পর্কিত পদ্ধতিগুলি কল করতে হবে ।
পাসিং মানটি সত্য বা মিথ্যা নির্দেশিত যদি আপনি বিজ্ঞপ্তিটি সরাতে চান বা না চান।
val ACTION_STOP_SERVICE = "stop_service"
val NOTIFICATION_ID_SERVICE = 1
...
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
super.onStartCommand(intent, flags, startId)
if (ACTION_STOP_SERVICE == intent.action) {
stopForeground(true)
stopSelf()
} else {
//Start your task
//Send forground notification that a service will run in background.
sendServiceNotification(this)
}
return Service.START_NOT_STICKY
}
যখন ধ্বংস হয় তখন আপনার কাজটি পরিচালনা করুন স্টপসেলফ () বলে ।
override fun onDestroy() {
super.onDestroy()
//Stop whatever you started
}
অগ্রভাগে পরিষেবাটি চলমান রাখতে একটি বিজ্ঞপ্তি তৈরি করুন।
//This is from Util class so as not to cloud your service
fun sendServiceNotification(myService: Service) {
val notificationTitle = "Service running"
val notificationContent = "<My app> is using <service name> "
val actionButtonText = "Stop"
//Check android version and create channel for Android O and above
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//You can do this on your own
//createNotificationChannel(CHANNEL_ID_SERVICE)
}
//Build notification
val notificationBuilder = NotificationCompat.Builder(applicationContext, CHANNEL_ID_SERVICE)
notificationBuilder.setAutoCancel(true)
.setDefaults(NotificationCompat.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.ic_location)
.setContentTitle(notificationTitle)
.setContentText(notificationContent)
.setVibrate(null)
//Add stop button on notification
val pStopSelf = createStopButtonIntent(myService)
notificationBuilder.addAction(R.drawable.ic_location, actionButtonText, pStopSelf)
//Build notification
val notificationManagerCompact = NotificationManagerCompat.from(applicationContext)
notificationManagerCompact.notify(NOTIFICATION_ID_SERVICE, notificationBuilder.build())
val notification = notificationBuilder.build()
//Start notification in foreground to let user know which service is running.
myService.startForeground(NOTIFICATION_ID_SERVICE, notification)
//Send notification
notificationManagerCompact.notify(NOTIFICATION_ID_SERVICE, notification)
}
ব্যবহারকারীর প্রয়োজন হলে পরিষেবাটি বন্ধ করতে বিজ্ঞপ্তিতে একটি স্টপ বাটন দিন।
/**
* Function to create stop button intent to stop the service.
*/
private fun createStopButtonIntent(myService: Service): PendingIntent? {
val stopSelf = Intent(applicationContext, MyService::class.java)
stopSelf.action = ACTION_STOP_SERVICE
return PendingIntent.getService(myService, 0,
stopSelf, PendingIntent.FLAG_CANCEL_CURRENT)
}