Articles of многопоточный

Обработчик потока Android не получает сообщение

У меня проблема с обработчиком потока, получающим сообщение. Все остальные потоки, которые я реализовал, работают хорошо. Здесь мой код: Начать тему InternalScoresThread t = new InternalScoresThread( this.game.getApplicationContext(), this.map.fileName, this.map.getCurrentTime(), new Handler() { @Override public void handleMessage(Message msg) { Log.d("DEBUG", "message received"); if (msg.getData().getBoolean("record")) { Player.this.showtRecordMessage(); } else { Player.this.showtFinishMessage(); } Player.this.showTimeMessage(); Player.this.showRestartMessage(); } }); t.start(); […]

В чем разница между View.postDelayed () и Handler.postDelayed () в основном потоке?

Согласно документации Handler.postDelayed(Runnable r, long delayMillis) : Заставляет Runnable r быть добавленным в очередь сообщений, который должен запускаться по истечении заданного промежутка времени. Runnable будет запущен в потоке, к которому прикреплен этот обработчик. С другой стороны View.postDelayed(Runnable action, long delayMillis) : Заставляет Runnable быть добавленным в очередь сообщений, который должен запускаться по истечении заданного времени. […]

Должно ли postDelayed вызывать сообщение для перехода в очередь?

Я смотрел на Android-документы для postdelayed post delayed documentation Это похоже на другой вопрос – https://stackoverflow.com/questions/25820528/is-postdelayed-relative-to-when-message-gets-on-the-queue-or-when-its-the-actual – I Было некоторое время назад, но это была другая ситуация (и в моем сознании яснее) В основном это то, что говорят документы для этого метода – «Заставляет Runnable быть добавленным в очередь сообщений, который будет запущен по истечении […]

Как я могу реализовать Timer / TimerTask, который выполняет AsyncTask? (Android)

Я пытаюсь выполнить задачу (т. Е. Загрузить данные из текстового файла) асинхронно и многократно в указанное время (т. Е. Каждые несколько секунд, хотя эта скорость может измениться во время выполнения). Я провел некоторое исследование и решил, что для этого потребуется либо AsyncTask, либо отдельный поток. Я решил использовать AsyncTask для простоты. Теперь мне нужно выполнить […]

Android-обработчик для пробуждения потока

У меня есть отдельный поток, который является потоком цикла, который объявляет обработчик, как показано ниже: class LooperThread extends Thread{ Handler h = null; @Override public void run(){ Looper.prepare(); h = new MyHandler(); Looper.loop(); } } И у меня также есть отдельная нить, которая спит. Код для myHandler синхронизируется с той же блокировкой, что и мой […]

Как реализовать Runnable с неблокирующим Looper / Handler

Когда вы реализуете Runnable, который использует Handler и Looper, вы получаете блокирующую очередь для Message / Runnables в методе run () вашего Runnable, потому что метод loop () блокирует. Как это: public class Task1 implements Runnable { private Handler mHandler; private boolean mCancelled = false; private void init() { Looper.prepare(); mHandler = new Handler() { […]

PhoneStateListener в фоновом режиме

У меня возникла проблема с попыткой запустить PhoneStateListener в * методах обратного вызова в фоновом потоке. Вот что я сделал до сих пор: Во-первых, я написал свою реализацию PhoneStateListener. Что-то вроде: public MyPhoneStateListener extends PhoneStateListener { private TelephonyManager mTelephonyManager; public MyPhoneStateListener(Context context) { mTelephonyManager = (TelephonyManager) context.getSystemServices(Context.TELEPHONY_SERVICE); } @Override public void onCallStateChanged(int state, String incomingNumber) […]

Android: сообщения обработчика задерживаются в конце рабочего потока

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

Обработчик или таймер для планирования задач с фиксированной скоростью

Я работаю над приложением, которое требует, чтобы он выходил онлайн каждые х минут и проверял наличие новых данных. Чтобы предотвратить интенсивную работу сети и данных, задача должна выполняться с фиксированной скоростью, но каков наилучший подход к использованию для такого решения? Handler или объект Timer ?

Асинхронный UI Unittest с Espresso, IdlingResource не работает с состоянием гонки

Я пытаюсь преобразовать некоторые из моих тестов Robotium UnitTests, чтобы использовать Espresso и иметь проблемы при обновлении пользовательского интерфейса через тест. Тест предназначен для фрагмента, который представляет собой форму, отображающую данные с объекта. Фрагмент имеет метод « BaseFragment.object_set (object) », который затем обновляет компоненты пользовательского интерфейса (с большим количеством TextView.setText (object.getField ()) ). Когда я […]