我们如何在 Scala 中使用 android JobIntentService?

How can we use the android JobIntentService in the Scala?

我可以成功扩展和调用 JobIntentService 的函数

enqueueWork(context, MessagesRetentionKotlin::class.java, UNIQUE_JOB_ID, work)

在 kotlin 中,但不在 Scala 中。在这里,我分享了 class 扩展 JobIntentService 的 Scala 代码,如果有人能帮助我,那将是很棒的。谢谢

    class MessagesRetention(context: Context, work: Intent) extends  MessagesRetentionTrait with JobIntentService{
 
  override def onCreate():Unit= {
    super.onCreate()
    Log.d(TAG, "onCreate")
  }

 

  override def onHandleWork(intent: Intent):Unit=  {
    Log.d(TAG, "onHandleWork")
    val input: String = intent.getStringExtra("inputExtra")
    for (i <- 0 to 10) {
      Log.d(TAG, "$input - $i")
      if (isStopped) return
      SystemClock.sleep(1000)
    }
  }

  override def onDestroy():Unit=  {
    super.onDestroy()
    Log.d(TAG, "onDestroy")
    val serviceIntent =  new Intent(this, MessagesRetentionImpl.getClass)
    serviceIntent.putExtra("inputExtra", "Test")
    MessagesRetention.enqueueWorkk(this, serviceIntent)
  }
}

object MessagesRetention {
  private val TAG = "MessagesRetention"
  val UNIQUE_JOB_ID = 10101
  def  enqueueWorkk(context: Context, work: Intent):Unit=  {
     enqueueWork(context, MessagesRetentionImpl.getClass, UNIQUE_JOB_ID, work)
  }
}

作为 scala 的新手,我没有将正确的服务上下文传递给 JobIntentService 的 enqueueWork 方法。我没有使用 .getclass 方法,而是使用 classOf[T] 进行服务 class 传递并且它起作用了。

enqueueWork(context, classOf[MessagesRetention], UNIQUE_JOB_ID, work)