我有一个我做很多领域操作的 android 应用程序。我想在后台做这些事情,并且我使用了处理程序线程。
我还在我的一些活动和服务类中使用了处理程序线程,并且我在或方法中使用quit()
了这些处理程序线程。onTerminate()
onDestroy()
但是,如果是非活动类,我不知道当我在其中使用处理程序线程时应该在哪里退出,因为它们没有onDestroy()
方法。我已经评论了这些handlerThread.quit()
部分,因为其中一个给出了错误。我有许多具有类似实现的类,并且我以相同的方式实现了它们。我在想在工作完成后关闭处理程序线程是有意义的,但是它有问题,因为当我取消注释这些行时出现错误handlerThread.quit()
。
@Override
public void find(Func1<RealmQuery<PlaylistSchedule>, RealmQuery<PlaylistSchedule>> query,
Action1<Result<List<PlaylistSchedule>>> onResult) {
if (query != null) {
handlerThread = new HandlerThread("MyHandlerThreadplaylistScheduleDao");
handlerThread.start();
looper = handlerThread.getLooper();
Handler handler = new Handler(looper);
handler.post(new Runnable(){
@Override
public void run() {
Timber.log(Log.DEBUG, "PlaylistDaoImpl", "find Thread.currentThread().getName() " + Thread.currentThread().getName());
mDatabase.findRealmObject(PlaylistSchedule.class, query,
result -> {
onResult.call(Result.getData(PlaylistScheduleMapper.copyFromRealm(result.data)));
//handlerThread.quit();
},
err -> {
onResult.call(Result.getError(err));
//handlerThread.quit();
}
);
}
});
}
}
我遇到的错误如下:
: Handler (android.os.Handler) {19be0f} sending message to a Handler on a dead thread
提前致谢。