Intereting Posts
Intellij IDEA 14 – Пакет R не существует WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION никогда не запускается Android MediaPlayer бросает «Подготовить неудачу: статус = 0x1» на 2.1, работает на 2.2 Можно ли использовать устройство для запуска только одного приложения? Приостановите видео в recyclerView, если на экране есть определенный процент Модели для Android – устройства ARMv6 и ARMv7 для разработки игр? Rx Java mergeDelayError не работает должным образом Каков наилучший способ очистить этот HTML-код для приложения Android? Как вызвать функцию в событии onclick в xamarin.studio Android Facebook SDK 3.0 дает «remote_app_id не соответствует сохраненному идентификатору» при входе в систему Android – Как сделать разделы в gridview? Java.lang.IncompatibleClassChangeError при включении espresso-contrib: 2.0 Почему не может быть сформирован пример выставления счетов на рынке Google в версии с подписанной версией? Отсутствующие языки в TTS-андроиде Почему RecyclerView.notifyItemChanged () создаст новый ViewHolder и использует как старый ViewHolder, так и новый?

Как можно переносить AsyncTask с Android на Java?

AsyncTask очень полезен для синхронизации между потоком пользовательского интерфейса и другими потоками в Android. Поэтому я прочитал его исходный код и попытался портировать java classic (JDK), но не успел, потому что некоторые классы не существуют в java (Message, Handler ..).
Я хотел бы создать класс с некоторыми полезными функциями, такими как AsyncTask (который может синхронизироваться между основным потоком и другими потоками):

doInBackground(Params... params) onProgressUpdate(Progress... values) onPostExecute(Result result) publishProgress(Progress... values) onPreExecute() onCancelled() 

Есть ли способ попробовать это?

Solutions Collecting From Web of "Как можно переносить AsyncTask с Android на Java?"

1. AsyncTask специально разработан для андроида, чтобы синхронизировать поток пользовательского интерфейса и резьбу Non-UI, также известную как « Нержавеющая резьба» …..

2. Существует альтернатива AsyncTask в Java под названием SwingWorker .

См. Эту ссылку для простого базового учебника:

http://kodejava.org/how-do-i-use-swingworker-to-perform-background-tasks/

Согласился, что SwingWorker является самым прямым аналогом AsyncTask

Если вы не используете Swing, другой вариант – ThreadPoolExecutor : http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html

Вот статья, демонстрирующая использование ThreadPoolExecutor для создания нескольких фоновых потоков: http://www.javacodegeeks.com/2013/01/java-thread-pool-example-using-executors-and-threadpoolexecutor.html

Игнорирование одного фонового потока, который выполняется и завершается без обновления обновления (что также является общим использованием AsyncTask в Android), может быть таким же простым, как:

 Executors.newSingleThreadExecutor().execute(new Runnable() { @Override public void run() { // do stuff in background } }); 

Я использую шаблон проектирования Observer для аналогичной ситуации. После нереста фонового потока основной поток переходит в спящий режим. Когда фоновый поток завершает асинхронную задачу, он просыпает основной поток сообщением обратного вызова. Это существенно удаляет блок для объекта синхронизации, ожидающего обратного вызова.