В моем старом приложении именно так я выполняю трудоемкие операции ввода-вывода в функции AppWidgetProvider
onUpdate
.
public class MyAppWidgetProvider extends AppWidgetProvider {
private static ExecutorService thread_executor = java.util.concurrent.Executors.newFixedThreadPool(1);
@Override
public void onUpdate(
Runnable runnable = ...
thread_executor.execute(runnable);
Не думаю, что этохороший способ, особенно это касается Android 8.
Мне нравится концепция LiveData
, так как нам не нужно явно обрабатывать потоки.Тем не менее, это позволяет нам выполнять трудоемкую операцию, не блокируя главный поток.
Мне было интересно, можно ли использовать LiveData
и присоединить Observer
для выполнения трудоемкого ввода-выводаоперация (как чтение из базы данных SQLite), в пределах AppWidgetProvider
?
Я не совсем уверен, как это сделать, поскольку я понятия не имею, как я могу получить LifecycleOwner
в AppWidgetProvider
, чтобы наблюдать LiveData
.