2012-06-10 2 views
1

Я написал сетевой пакет для сокета i/o, который использует нормальные потоки java, и мне интересно, можно ли использовать этот пакет? Я не манипулирую ничем в пользовательском интерфейсе Activity с этими потоками.Как запустить поток java из Activity в android

Или мне нужно переносить эти потоки Java на совместимые с Android? Потому что я всегда думал, что вы можете использовать обычные потоки Java, если они не меняют представления в Activity.

Как вы отправляете образцы кода?

Получил возможность подключиться к тестированию, если очереди сообщений работают. Im с использованием 2 LinkedBlockingQueue ввода и вывода. Причина, почему мне нужно использовать Threads. Теперь я просто преобразовал класс, который я использую для инкапсуляции соединения и SocketIO в AsyncTask. Это для школьного проекта, где нам нужно управлять автомобилем через Wi-Fi с помощью приложения для Android.

+0

Почтового индекса углубленного с четырьмя пробелов, или поместить обратно-тики вокруг кода – HXCaine

+0

Вы можете разместить пример кода, как это: скопировать прошлое кода в вашем вопросе, выберите код и нажмите Ctrl + K опубликовать свой вопрос !! –

ответ

1

Вы можете использовать потоки Java на Android. Фактически, они ничем не отличаются, и модель Android поддерживает общий класс Thread. Однако, просто взяв старый код, привязав к нему некоторые специфические компоненты Android и надеясь на лучшее, не рекомендуется. Вместо этого было бы неплохо использовать Service для координации фоновых потоков, которые соответствуют пользовательскому интерфейсу. Службы запускаются без пользовательского интерфейса, но находятся в отдельном компоненте, чтобы их логически отделить от остальной части вашего приложения.

0

Внутри сетевой библиотеки банки, если вы используете обычную старую нить из пакета java.lang, вам не нужно делать ничего особенного, так как она была портирована на Android, так как уровень 1.

Если вы используете классы API из пакета java.util.concurrent вам нужно сделать второй снимок в вашей библиотеке jar-сети, поскольку некоторые классы не переносятся на Android с уровня API 1, поэтому может не работать на всех уровнях API, например, java.util.concurrent.BlockingDeque введен с API уровня 9.

Такая же ситуация существует в пакете java.net, например, java.net.IDN введена с уровня API 9. Так что лучше t o проверьте их в библиотеке библиотеки сети.

0
Threads from java works just fine with Android.. 

Но вы должны помнить о нескольких вещах.

  1. Это была хорошая практика программирования, чтобы не работать с UI-интерфейсом. Но

    от HoneyComb его правило.

  2. Вы можете использовать Java путь, расширив класс к Thread class or implementing Runnable interface.

  3. После того, как создать отдельный поток в андроиде, вы упали из потока пользовательского интерфейса, так, чтобы вернуться, чтобы отобразить не-щий работайте над нитью ui, вам нужно использовать либо Handler, либо попробуйте использовать AsyncTask (он синхронизирует пользовательский интерфейс и не-пользовательский интерфейс в Android).

Смежные вопросы