0

当我调用restartLoader它时,它每次都会创建新线程。猜猜原因是 myAsincTaskLoader是静态的,而 Fragment 也是静态的,不是吗?我应该怎么做才能只使用一个线程来重新加载我的数据?谢谢

public static class NewsBelarusSectionFragment extends Fragment implements LoaderManager.LoaderCallbacks<Object> {
    …
            @Override
            public Loader<Object> onCreateLoader(int id, Bundle args) {
                   return new FeedsAsyncTaskLoader(getActivity());
            }

            public static class FeedsAsyncTaskLoader extends AsyncTaskLoader<Object> {
            …
4

1 回答 1

1

AsyncTasks 在后台使用常规线程异步完成工作,这是线程的规则,一旦它们完成,线程就会死亡并且不能再次重用/重新启动,因此基于 Java 核心行为线程不能被重用来执行功能他们已经执行了,一旦“运行”方法结束,线程就永远消失了,如果你需要同一个线程重新加载数据,你需要想出自己的线程和机制来保持它直到下一组数据必须加载并保持循环,我不建议这样做,因为它的性能非常昂贵,如果您需要加载器在同一个线程中完成其工作,您必须处理所有资源释放每次,你做错事的机会都很高......

问候!

于 2013-07-26T01:05:39.100 回答