Day 24 | Service

Service是应用程序元件之一,它用於背景处理与使用者介面无关的长时间任务,即便切换到其他应用程序也会继续执行,例如:讯息通知、资料下载或音乐播放等。

建立Service

  1. File→New→Service→Service

    Untitled

  2. 输入Service名称後点选Finish

    Untitled

  3. AS会自动产生Service需要的档案,AndroidManifest.xml也会自动增加Service的资讯

    Untitled

启动Service

在Activity中启动Service,可用intent传入startService()方法,参数为当前Activity与Service

startService(Intent(this, MyService::class.java))

在Activity中关闭Service,可用intent传入stopService()方法。

stopService(Intent(this, MyService::class.java))

Service被启动後执行onCreate(),并呼叫onStartCommand(),当Service需要结束时使用stopSelf(),此时会进入onDestroy()

class MyService : Service() {

    //仅在执行时启动
    override fun onCreate() {
        super.onCreate()
    }

    //每次启动都呼叫
    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        super.onStartCommand(intent, flags, startId)
        //终止Service,进入Service类别的onDestroy()
        stopSelf()
        return super.onStartCommand(intent, flags, startId)
    }

    override fun onBind(intent: Intent): IBinder?= null
}

onStartCommand()告诉系统如何重启Service,若执行中的Service收到Activity发出startService()请求,会直接执行onStartCommand(),而不会再次执行onCreate()

onStartCommand()第一个参数intent可接收由Activity启动时夹带的资讯,第二个参数flags表示启动服务的方式,第三个参数为启动的识别标签,return须回传整数,且必须是下列三种之一:

  • START_NOT_STICKY:若Service被终止时则结束服务不再建立。
  • START_STICKY:若Service被终止时,系统会尝试重启并再次执行onStartCommand(),但不重传Iintent资料
  • START_REDELIVER_INTENT:若Service被终止时,系统会尝试重启并再次执行onStartCommand(),且重传Iintent资料

<<:  [Day 19] 训练集、验证集、测试集

>>:  让按钮来个酷动态! 操纵DOM事件:CSS 篇 (二)

Day25-TypeScript(TS)函式(Function)的剩余参数(Rest Parameter)

今天要来讲讲TypeScript(TS)函式(Function)的剩余参数(Rest Paramet...

R语言-正规化回归预测-ridge & lasso (ridge & lasso regression in r)

废话不多说,直接附上code 影片含有程序码详细解说,若有误再烦请告知,谢谢 library(glm...

来了解hyperviser

Hyperviser源起 (虚拟机, Virtual Machine),好像是这几十年才听到的新名词...

Day09 - this&Object Prototypes Ch3 Objects - Contents - [[Put]]

[[Put]] 机制会在我们要赋予 object property 值的时候出现,[[Put]] 机...