Я пытаюсь использовать Android в качестве многопользовательской системы. Поэтому я пытаюсь обернуть голову вокруг очереди, не пройдя через 4 года compsci.
Наличие «4 лет compsci» было бы разумной идеей для тех, кто хочет переписать части операционной системы, как вы, кажется, хотите сделать.
Что такое командная очередь, а не очередь сообщений?
У одного есть слово «команда». У другого есть слово «сообщение». Таким образом, единственные другие различия заключаются в том, что вы придаете этим двум словам.
Например, некоторые могут утверждать, что «команда» является типом «сообщения», но обратное неверно.
Если я хочу, чтобы в очереди стояли команды, так что последняя цель/команда в очереди запускается только после предыдущего, прежде чем она закончится.
Вы не указали какие-либо указания на то, что вы используете для этих «намерений в основном для команд». Intent
в Android используется для запуска активности, запуска или привязки к службе или отправки широковещательной передачи. Характеристики поведения Intent
будут зависеть от того, что вы используете для Intents
.
Например, sendBroadcast()
не имеет строгой концепции «очереди». Тем не менее, IntentService
делает, когда используется с startService()
- он будет буфером Intents
, ожидая onHandleIntent()
, чтобы завершить обработку текущего Intent
перед тем, как передать ему следующий.
Android/Java предлагает следующее: http://developer.android.com/reference/java/util/Queue.html.Но почему бы мне не использовать это: http://www.rabbitmq.com/java-client.html
RabbitMQ для очередей сообщений между машинами. Вы можете сказать это, прочитав страницу, с которой вы связались («Клиентская библиотека RabbitMQ Java позволяет Java-коду взаимодействовать с серверами AMQP»).
Queue
является структурой данных, используемой в одном приложении, как это все в java.util
пакете.
Не может быть сообщение или намерение быть сообщением тоже?
Вы можете присвоить любые значения, которые вы хотите использовать в терминах «команда» и «сообщение».
Но я хочу разрешить пользователям выполнять «что-то» только после того, как кто-то «что-то» выполнил.
В Андроиде нет модели общего назначения между Intent
. Следовательно, без перезаписи какой-либо операционной системы у вас нет средств для обеспечения координации, которую вы ищете.
Почему вы хотите использовать стороннюю библиотеку, если требуемая функциональность предоставляется на этом языке? – Catherine
Как CommonsWare только что сообщила мне: «Очередь - это структура данных, используемая в одном приложении» + «RabbitMQ предназначена для очередей сообщений между машинами». Приложение позволяет удаленно отправлять намерения/команды в другое приложение/систему Android, чтобы затем обработать. Таким образом, использование обоих libs вступает в игру rabbitmq или таких в пользовательском приложении и встроенный lib в хост-приложение/систему. – sirvon
http://stackoverflow.com/questions/4962755/why-are-commands-and-events-separately-represented – sirvon