@zongwu
2017-01-05T07:45:57.000000Z
字数 886
阅读 368
Job Manager Configuration
技术交流
没有一个适合所有的解决方案,特别是对于一个Job Manager。这就是为什么我们试图保持它尽可能灵活。
当构造JobManager时,可以提供一个Configuration参数。
- Consumer Threads 您可以配置最小消费者线程数或最大消费者线程数,以及线程没有更多作业时的保活超时时间。JobManager根据负载因子决定何时创建新线程。
- Job Queues 作业管理器仅带有一个内存队列和写在Sqlite顶部的持久队列。如果您想要提供自己的持久层或内存队列,您可以通过提供自定义队列工厂来实现。
- Job Persistence 默认情况下,作业管理器使用java序列化将作业保留到磁盘。 如果要使用其他选项(例如Json),您可以提供作业序列化程序。
- Network Utility 默认情况下,作业管理器查询连接管理器以检查网络是否可用(对于网络绑定作业)。 它还监听android.net.conn.CONNECTIVITY_CHANGE事件以立即检测网络更改(例如,如果您有待处理的网络绑定作业,则它们将在网络恢复后立即启动)。 如果要自定义此逻辑,您可以提供自定义网络Util。 如果这样做,请确保还实施网络事件提供程序。 否则,JobManager将必须轮询您的实用程序和浪费CPU周期。
- Job Schedulers JobManager可以与其他JobSchedulers一起工作,以在必要时唤醒应用程序。 有关集成,请参阅wiki。
- Dependency Injection 如果使用依赖注入器,可以通过注入器方法提供。 JobManager将在调用onAdded之前调用它。 如果您的作业是持久的,当作业从磁盘反序列化时也会被调用。
- Multiple Job Managers 如果您需要Multiple Job Managers,您应该提供一个ID。 这将帮助他们在应用程序重新启动时识别持久层。
- Logs 为了能够看到作业发生了什么,您可以提供一个自定义记录器。 确保您的isDebugEnabled在生产环境下返回false,以避免不必要的字符串生成。