Новое в stackoverflow, было очень полезным поиском, но, увы, пришло время задать вопрос.
Я пытаюсь использовать одноядерный телефон Android android 2.2 для проведения некоторых исследований. Я реализовал алгоритм, который выполняет множество расчетов и создает много данных. Эти данные должны быть обработаны, а решение представлено обратно клиентскому приложению в течение 40 мс, а затем снова обрабатывать новые данные состояния, поступающие от клиента. Кроме того, результат расчетов должен быть сохранен на SD-карте в виде журнала данных. Так что, будучи новичком в многопоточности и Android, я должен использовать следующие действия в своем приложении: (Как примечание, этот телефон, когда в исследовательском режиме не предназначен для использования в качестве телефона, телефон будет находиться в режиме полета с отключенной беспроводной связью, и все приложения, которые могут быть отключены, будут отключены, и нет необходимости в отображении или взаимодействии с пользовательским интерфейсом после его запуска и запуска...)
Поэтому у меня возникли проблемы с получением всех деталей. Я не могу понять, как одно ядро будет идти в ногу со всем этим сразу?
Итак, вот моя мысль, пожалуйста, скажите мне, правильно ли я направляюсь. Я не прошу вас решить мою проблему, только любой совет о том, как сломать этого зверя:
Итак, допустив эту настройку, могу ли я сделать часть алгоритма этой несколько детерминированной так, чтобы она всегда выполнялась, если она получает новый пакет tcp, и упреждающая запись SD в фоновом режиме?
Argh... должен был выбрать что-то более простое для моей первой программы
Благодарю.
Да, я думаю, что вы правы, что было бы лучше выбрать что-то проще для вашего первого приложения;) Но насколько я понимаю, что вы пытаетесь сделать, я не думаю, что вам нужна асинхронная многопроцессорность. Вы получаете некоторые данные, которые хотят обработать их и передать результат. Я считаю, что HandlerThread - именно то, что вы ищете. Он может получать сообщения с данными внутри. Вы отправляете их обработчику и обрабатываете их в переопределенном методе handleMessage (Message m). Поэтому каждый раз, когда вы получаете сообщение, вы можете просто зарегистрировать время и посмотреть, будет ли последний старше вашего лимита. Если это так, вы можете просто выбросить сообщение или всю очередь или отправить сообщение в ваш последовательный порт, вызывая переполнение. Это может быть реализовано, как вы предлагаете в службе. Другой HandlerThread можно запустить с помощью Thread.PRIORITY_BACKGROUND, чтобы написать все для SD. Вы можете отправлять сообщения даже очень удобно, если вы применяете Messenger к Handlers