0

我有一个我做很多领域操作的 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

提前致谢。

4

0 回答 0