Я хочу позвонить adapter.notifyDataSetChanged()
из другого потока. Я прочитал, что должен использовать AsyncTask
и выполнить adapter.notifyDataSetChanged()
при выполнении post.Call adapter.notifyDataSetChanged() из другого потока
Я должен выполнить AsyncTask
каждые 5 секунд только для текущей активности (может быть родительской или дочерней), потому что только одно действие может выполнять асинтезу одновременно.
Должен ли я создать , который выполняет AsyncTask
каждые 5 секунд, остановите его, когда я начну выполнять другое действие и запустите его обратно в onResume
?
Вот мой код для темы, которая обновляет ListView
текущей деятельности.
private void runEventHandler() {
new Thread() {
public void run() {
while (true) {
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
users.add(new User(10, "a", false));
adapter.notifyDataSetChanged();
}
});
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
Теперь я должен быть в состоянии обновить дочерние виды деятельности ListViews
при добавлении нового пользователя.
вы можете использовать runOnUiThread.for более подробную информацию смотрите http://stackoverflow.com/questions/11140285/how-to-use-runonuithread – pooyan
Он работает хорошо, но он продолжает работать, когда я запускаю дочернюю активность. Как я могу остановить его, а затем перезапустить? Или, если возможно, могу ли я обновить дочерние действия из потока? – Servietsky
вы можете использовать флаги в своих потоках, а за их пределами менять флаги, чтобы приостановить или остановить их. если вы разместите свой код здесь, я могу помочь вам лучше. – pooyan