【发布时间】:2014-12-10 17:13:55
【问题描述】:
这个问题与路径 - android 的优先级作业队列有关。 我的问题是作业队列启动的线程在作业完成后没有被杀死。 我目前在应用类中有如下配置。
Configuration configuration = new Configuration.Builder(this)
.customLogger(new CustomLogger() {
private static final String TAG = "SS.JOBS";
@Override
public boolean isDebugEnabled() {
return true;
}
@Override
public void d(String text, Object... args) {
Log.d(TAG, String.format(text, args));
}
@Override
public void e(Throwable t, String text, Object... args) {
Log.e(TAG, String.format(text, args), t);
}
@Override
public void e(String text, Object... args) {
Log.e(TAG, String.format(text, args));
}
}).minConsumerCount(0)// always keep at least one consumer alive
.maxConsumerCount(3)// up to 3 consumers at a time
.loadFactor(3)// 3 jobs per consumer
.consumerKeepAlive(120)// wait 2 minute
.build();
jobManager = new JobManager(this, configuration);
即使在我的工作完成后,我仍然永远“不允许我死”。 我一直将电话连接到 logcat,甚至在 2 天后,我在 logcat 中收到了这条线路。 特别是,这条线恰好每两分钟出现一次。 我需要有关如何将其配置为不发生的帮助。这意味着尽管作业已完成,但线程仍在运行,这是一种资源浪费。
在运行我的工作时,我不需要“requireNetwork”或坚持。 因此,我不会为此传递任何论据。 我的构造函数看起来像:
super(new Params(SsConstants.LOAD_NEWS_FEED_FROM_TABLE_JOB_PRIORITY));
logcat 消息是 -
Thread 1206: Load factor check, true = (0 < 1)||(0*3 < 0 + 0) consumer thread : true
didn't allow me to die re-running thread 1206
rerunning consumer 1206
问候 巴尔加夫
【问题讨论】:
标签: java android multithreading