美文网首页
Service的基本用法

Service的基本用法

作者: 别看后面有人 | 来源:发表于2021-07-12 21:44 被阅读0次

一、定义一个Service
创建service,项目-----New----Service-----service
Exported属性表示暴露给外部其他程序访问,Enable属性表示是否启用
创建之后的代码:

class MyService : Service() {

    override fun onBind(intent: Intent): IBinder {
        TODO("Return the communication channel to the service.")
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        return super.onStartCommand(intent, flags, startId)
    }

    override fun onDestroy() {
        super.onDestroy()
    }
}

onBind()方法时Service中唯一的抽象方法,必须在子类中实现。onCreate()、onStartCommand()和 onDestroy() 时Service中常见的方法,onCreate()方法在创建Service的时候调用,onStartCommand()方法会在每次Service启动的时候调用,onDestroy()会在Service销毁的时候调用,另外,每一个Service需要在manifest中注册才能使用。
二、启动和停止Service
具体代码:

        startServiceBtn.setOnClickListener {
            val intent=Intent(this,MyService::class.java)
            startService(intent)
        }

        stopServiceBtn.setOnClickListener {
            val intent=Intent(this,MyService::class.java)
            stopService(intent
            )
        }

在MyService中修改代码如下:

class MyService : Service() {

    val TAG="MyService"

    override fun onCreate() {
        super.onCreate()
        Log.d(TAG, "onCreate: ")
    }
    override fun onBind(intent: Intent): IBinder {
        TODO("Return the communication channel to the service.")
        Log.d(TAG, "onBind: ")
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        Log.d(TAG, "onStartCommand: ")
        return super.onStartCommand(intent, flags, startId)

    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d(TAG, "onDestroy: ")
    }
}

打印日志:
com.app.activitytest D/MyService: onCreate: 
com.app.activitytest D/MyService: onStartCommand:

com.app.activitytest D/MyService: onDestroy: 

MyService中的onCreate()和onStartCommand()方法都执行了,说明Service确实启动了,onCreate()方法是在Service第一次创建的时候调用,onStartCommand()方法是每次启动Service的时候会调用
。onDestroy()方法表示停止服务。
注意在Android8.0之后应用的后台功能大幅度削减,只有在保持前台功能可见的情况下,Service才能稳定运行,一旦进入后台之后,Service随时可能被回收。

相关文章

网友评论

      本文标题:Service的基本用法

      本文链接:https://www.haomeiwen.com/subject/usbkpltx.html