Articles of многопоточность

Android: лучшая практика для выполнения асинхронных операций в getView ()

Пожалуйста, не закрывайте это, ИМХО это приличный и, возможно, полезный вопрос программирования. Пожалуйста, я читаю много вещей, и я сбиваюсь с толку, потому что читаю разные мнения и разные подходы. Проблема заключается в следующем: В getView() Adapter мне нужно выполнить некоторую асинхронную операцию, например, проверить формирование в Интернете и обновить представление на основе этого. Я […]

Проблема TarsosDSP и SurfaceView с несколькими потоками

Я использую TarsosDSP для вычисления частот основного тона в реальном времени. Он использует AudioDispatcher, который реализует Runnable и публикует результаты с помощью метода handlePitch, чтобы использовать его в основном потоке. Я использую SurfaceView для рисования этого значения при его обновлении. SurfaceView также требует, чтобы другой поток рисовал на холсте. Итак, у меня есть 2 управляемых […]

Лучший способ выполнить метод асинхронно в Android (компактный и правильный)

Скажем, у меня есть активность, показывающая некоторый контент на экране. Мне нужно выполнить какой-либо метод (asyncMethod) асинхронно, и когда это будет сделано, мне нужно обновить данные на экране. Какой самый правильный и простой способ сделать это? В настоящее время самым простым способом, который я знаю, является использование потока: new Thread(new Runnable() { public void run() […]

Рекомендуемый шаблон проектирования для записи в базу данных SQLite на Android

Folks, Я ищу шаблон дизайна, который позволяет потоку пользовательского интерфейса взаимодействовать с клиентской базой данных SQLite, которая может иметь объемные вставки (занимает 10 секунд), быстрые вставки и чтение, а также не блокирует поток пользовательского интерфейса. Я хотел бы получить совет относительно того, использую ли я для этого оптимальный шаблон проектирования, поскольку я недавно отлаживал тупик […]

Правильное использование yieldIfContendedSafely () в многопоточном приложении Android

В моем приложении я использую AsyncTask для записи некоторых данных в базу данных в транзакции. Эта база данных также доступна из потока пользовательского интерфейса. Просматривая доступные методы базы данных, я столкнулся с yieldIfContendedSafely() . Кажется, что этот метод следует использовать для любых случаев, когда транзакция выполняется из отдельного потока. Но вряд ли существует какая-либо документация […]

ProgressDialog анимации приостанавливается на большом setText ()

Я пытаюсь установить большой текст в EditText, операция может занять более 30 секунд, поэтому я использую ProgressDialog. Он появляется, но анимации нет, а затем исчезает, когда операция выполняется. Вот мой упрощенный код: class FileOpener extends AsyncTask<File, Integer, String> { private ProgressDialog progress; @Override protected void onPreExecute() { progress = new ProgressDialog(context); … progress.show(); } @Override […]

Ожидание открытия ящика навигации перед инициализацией Фрагменты с пустым циклом while

Согласно документации DrawerLayout , «Избегайте выполнения дорогостоящих операций, таких как макет во время анимации, поскольку это может вызвать заикание». Таким образом, я пробовал дождаться закрытия ящика перед тем, как продолжить: @Override public void onItemClick(AdapterView parent , View view , int position , long id) { // Close the drawer mDrawerLayout.closeDrawer(mDrawerList); ExecutorService es = Executors.newSingleThreadExecutor(); final […]

Модернизация пользовательского клиента для проверки подлинности WebTokens

Я использую Retrofit для обработки связи с API-интерфейсом сервера, пользовательским интерфейсом JSON для аутентификации пользователя API. Срок действия токена истекает время от времени, и я ищу лучший способ реализовать Retrofit Client, который может обновить токен автоматически по истечении срока его действия. Это первая реализация, с которой я столкнулся: /** * Client implementation that refreshes JSON […]

Как передать значение прогресса от потока к активности?

У меня возникает проблема с дизайном, отправляющая значение индикатора выполнения из класса, вызванного из класса Thread in Activity, для обновления GUI, как показано ниже. [Фрагмент кода не компилируется для объяснения только]: Class A : Extend Activity { new Thread(new Runnable() { public void run() { B objB = new B(); objB.DownloadFile(); } }).start(); } Class […]

Использование OpenGL из основного потока на Android

Я хотел бы вызвать метод GLES20 когда выбран элемент из меню опций. public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.clear: GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); break; // … } } Это не работает, так как я в main потоке, а не в GLThread . В нем говорится: Вызов API OpenGL ES без текущего контекста (регистрируется один раз […]