IllegalStateException:应用程序可能不会安排超过100个不同的作业

时间:2018-06-15 14:19:21

标签: java android kotlin android-job

我的任务是在互联网可用时每10小时运行一次后台任务。

对于这个使用流行的evernote github lib:android-job。 我的代码:

应用程序类:

public class MyApplication extends MultiDexApplication {


   @Override
   public void onCreate() {
       super.onCreate();

       JobManager.create(this).addJobCreator(new BackupJobCreator());
       BackupJob.Companion.schedule();

    }
}

工作创建者类:

class BackupJobCreator : JobCreator {

    override fun create(tag: String): Job? {
        return when (tag) {

            BackupJob.BACKUP_TAG -> {
                BackupJob()
            }
            else -> null
        }
    }
}

我的工作班:

class BackupJob : Job() {

    @Inject
    lateinit var backupRepo: BackupRepository
    private var backupDispose = Disposables.empty()
    private val dataFormat = SimpleDateFormat("dd MM yy hh:mm", Locale.US)
    private val tag = BackupJob::class.java.name.replace("com.jellyworkz.udark.backup.source.BackupRepository.", "3zgroup ")

    init {
        Log.i(tag, "init backup job")
        MyApplication.getInstance().plusBackupComponent().inject(this)
    }

    companion object {
        const val BACKUP_TAG = "backupJob"

        fun schedule(): Int {
            return JobRequest
                    .Builder(BACKUP_TAG)
                    .setPeriodic(TimeUnit.HOURS.toMillis(BACKUP_PERIOD_HOURS))
                    .setRequiredNetworkType(JobRequest.NetworkType.CONNECTED)
                    .build()
                    .schedule()
        }
    }

    override fun onRunJob(params: Params): Result {
        backupDispose.dispose()

        backupDispose = backupRepo.backup()
                .compose(RxUtils.ioToMainTransformer())
                .doOnComplete {
                    Log.i(tag, "ended backup job on ${dataFormat.format(Date(Calendar.getInstance().timeInMillis))}")
                }
                .subscribe({
                    MyApplication.getInstance().clearPurchaseComponent()

                }, {
                    it.message?.let { error ->
                        Log.e(tag, error)
                    }
                })

        return Result.SUCCESS
    }
}

所以有一些问题:

首先:每次我的应用程序打开时服务都会启动,但只需要10小时后才能启动。

第二:经过一段时间(1个月)可怕的事情发生了。我的应用程序每秒开始崩溃:

  

致命异常:java.lang.RuntimeException

     

无法创建应用程序com.serg.app.MyApplication:
  java.lang.IllegalStateException:应用程序的调度可能不超过100   不同的工作

请在我出错的地方帮忙吗?

0 个答案:

没有答案