Можно ли использовать Java Executor и Android Handler в качестве глобальных переменных для всех задач параллелизма? - PullRequest
0 голосов
/ 08 января 2020

У меня есть несколько простых задач для запуска в фоновом режиме, которые обновляют глобальные List<App> приложений. Теперь, когда AsyncTask устарела, я использую простое executor для выполнения задачи и handler из основного потока, где я обновляю gridAdapter в своем основном потоке.

private final Executor executor = Executors.newCachedThreadPool();
private final Handler handler = new Handler(Looper.getMainLooper());

private List<App> loadAllApps() {
    final List<App> apps = new ArrayList<>();
    executor.execute(new Runnable() {
        public void run() {

            // My code to get items into the list.

            handler.post(new Runnable() {
                public void run() {
                    gridAdapter.notifyDataSetChanged();
                }
            });
        }
    }
return apps;
}

Это работает нормально Но, как новый android разработчик, я чувствую, что что-то упустил, и это не может быть так просто. Что-то не так с этим способом выполнения фоновых задач? Например, как я узнаю о ходе выполнения моей задачи, используя этот способ? Заранее спасибо за любые идеи!

...