Я хотел бы написать на экран Android, как если бы это был простой терминал. Я хочу, чтобы вывод отображался в момент его написания. Мое приложение делает несколько интенсивных всплесков процессора, немного записывает на экран и продолжает. Я использую адаптер списка для вывода. Проблема заключается в том, что вывод не отображается, пока активность не исчезнет.Как писать на экран и выводить вывод до того, как активность перестанет работать
ответ
Предполагаю, что вы делаете все это в onCreate(). Попробуйте сделать это как-то так:
- OnCreate начинает AsyncTask (см developer.android.com -> AsyncTask)
- перезаписи doInBackground с ресурсоемким вспениванием
- всякий раз, когда вы хотите написать на терминал (в вашем случае listview) вызовите publishProgress()
- перезапишите onProgressUpdate и дайте ему добавить текст в ваш адаптер списка.
Возможно, вы могли бы использовать простой текстовый просмотр, чтобы отображать ваши вещи с помощью прокрутки. или, возможно, WebView. Я не уверен, что было бы лучше.
Хороший думаю смотреть на может быть на Android эмулятор терминала, для которых источник может быть найден здесь: github.com/jackpal/Android-Terminal-Emulator
Они, кажется, используют свои собственные View, который может можно найти здесь: https://github.com/jackpal/Android-Terminal-Emulator/blob/master/src/jackpal/androidterm/Term.java#L2527
Надеюсь, это поможет.
Для этого вы можете использовать AsyncTask
.
AsyncTask заботится о работе с ЦП, не блокируя ваш пользовательский интерфейс. Механизм присутствует, чтобы сообщить о прогрессе в приложении, используя тип вашего выбора. В вашем случае задача может сообщать о ходе обновления в виде строк; приложение просто добавит эти строки в текстовое представление.
- 1. Как Firefox внезапно перестанет работать на Ubuntu?
- 2. код перестанет работать после того, как я добавил вложенные взгляды
- 3. JQuery оповещения не перестанет выводиться на экран
- 4. как правильно выводить вывод контроллера на GSP
- 5. Как приложение может писать текст на экран?
- 6. Активность Android отображается после того, как пользователь разблокирует экран
- 7. Как передать вывод на экран текущего процесса?
- 8. jq: Как выводить кавычки на необработанный вывод на окна
- 9. Программирование на языке C, как выводить введенную строку на экран?
- 10. Как обновить экран до того, как метод завершится дроидом?
- 11. Вывод содержимого узла до и после того, как дочерний элемент
- 12. Как отложить запуск программы до того, как активность диска снизится
- 13. вывод изображения на экран?
- 14. Как получить вывод на экран во время действия? (Java)
- 15. Строка не будет правильно выводить на вывод
- 16. ruby не будет выводить вывод
- 17. Установить полный экран на активность
- 18. Как работать с AsyncTask, когда экран вращается
- 19. запись стандартный вывод на экран и файл
- 20. Ассамблея писать на стандартный вывод
- 21. После установки завитка расширения PHP перестанет работать
- 22. Как я могу выводить на экран html в виде строки?
- 23. PolymerJS простая привязка данных. Как выводить свойства на экран?
- 24. Вывод на экран и печать CSS
- 25. Как выводить как журнал cron, так и вывод сценария на тот же самый финал?
- 26. cURL и PHP: Остановить вывод на экран
- 27. Экран не полностью обновлен до того, как функция оставлена
- 28. Как я могу выводить на экран искровую оболочку
- 29. ob_start() скрывает вывод на экран
- 30. раздаточная апи v1 - когда на самом деле перестанет работать
Если вы работаете над этим решением. Я обнаружил, что publishProgress() должен быть вызван в том же блоке кода, что и doInBackground. Его нельзя вызвать каким-либо другим способом. – Xarph
У меня также возникла проблема с вызовом другого метода из кода doInBackground code block. Простой вызов другого метода в файле создает исключение RuntimeException. – Xarph
Я решил свою оригинальную проблему на основе ваших предложений. AsyncTask сделал трюк. Это была борьба, но я, наконец, получил все, что мне нужно. Я благодарю вас обоих за ваше ценное предложение. – Xarph