0

我嘗試使用JobSchedulers我聊天應用程序(用於異步發送消息):爲什麼我的工作沒有開始?

val job = dispatcher.newJobBuilder() 
       .setService(BackgroundJobService::class.java) 
       .setTag(BackgroundJobService.TASKTAG_SEND_MESSAGE) 
       .setReplaceCurrent(false) 
       .setConstraints(Constraint.ON_ANY_NETWORK) 
       .setExtras(bundle) 
       .setTrigger(Trigger.executionWindow(0, 1)) 
       .build() 
dispatcher.mustSchedule(job) 

,並添加清單我的服務:

<service 
      android:exported="false" 
      android:name=".data.background.service.BackgroundJobService"> 
      <intent-filter> 
       <action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE"/> 
      </intent-filter> 
</service> 

我寫這篇文章JobService,它不是所謂的onCreate()和不叫onDestroy()

class BackgroundJobService : JobService() { 
     companion object { 
      val TASKTAG_SEND_MESSAGE = "send_message" 
     } 

     @Inject 
     lateinit var webSocket: IRxWebSocket 
     var subscribe: Disposable? = null 

     override fun onCreate() { 
      super.onCreate() 
      App.appComponent.inject(this) 
      subscribe = webSocket.connect().subscribe({}, {}) 
     } 

     override fun onStartJob(job: JobParameters?): Boolean { 
      return true // Debug point here 
     } 

     override fun onStopJob(job: JobParameters?): Boolean { 
      return true 
     } 

     override fun onDestroy() { 
      super.onDestroy() 
      subscribe?.dispose() 
     } 
    } 

但我的onStartJob不打電話!我的錯誤在哪裏? 我看到消息「Google Play服務已停止」。

+0

你沒有任何分號';'?! –

+1

@Omar這是Kotlin的代碼。 – zsmb13

+0

我只是問... –

回答

0

你的艙單申報是錯誤的:你需要爲需要,只有操作系統本身可以使用特定的許可申報工作服務。從the JobService documentation

招聘服務,必須擁有此權限的保護:

<service android:name="MyJobService" android:permission="android.permission.BIND_JOB_SERVICE" >

如果作業服務清單中的已宣告但尚未擁有此權限的保護,該服務會被操作系統忽略。

0

我必須把在同捆

bundle.putString("TAG", gson.toJson(object)) 

但不

bundle.putParcelable("TAG", object) 
相關問題