Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Написать программу, в которой основную работу производит сервис - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Среда разработки AIDE http://www.cyberforum.ru/android-dev/thread1064592.html
Привет, народ. Кто-нибудь пользуется AIDE? С ее помощью вроде можно редактировать и запускать файлы, созданные в Eclipce. У меня приложение типа "HelloWorld" - выдает ошибку имени директории:...
Программирование Android Где помещать запуск моей программы Вот пример програмки использующей лицензирование от Slideme http://slideme.org/files/SlideMEDemo_v2_20120503.zip Разобрался, что там из меню вызываються разные типы лицензирования. Меня интересует... http://www.cyberforum.ru/android-dev/thread1064585.html
Программирование Android Разработка приложений для Андроид. С чего начать? Что нужно изучить?
Ребят, подскажите! Хочу стать разрабом для популярной ОС Андроид, с чего начать? Что нужно изучить, где 100% безопасно можно взять исходники ядра, литература, предпологаемо в основу положу С++,...
Программирование Android FaceBook в Adroid app
Здравствуйте. Почему у меня в Eclipse перечеркнутые процедуры для работы с FaceBookSDK? Я так понимаю эти методы устарели?. А какие новые использовать?
Программирование Android JDK 6 в Eclipse http://www.cyberforum.ru/android-dev/thread1064514.html
Здравствуйте. А что JDK 6 не поддерживает FaceBookSDK?
Программирование Android реализовать передачу и прием Ребят подскажите пожалуйста как реализовать передачу и прием строки по Bluetooth. Ну допустим со смартфона мне нужно отправить на терминал компьютера по UART строку "12345". а то что я буду вводить... подробнее

Показать сообщение отдельно
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
07.01.2014, 10:43
Цитата Сообщение от bt1024 Посмотреть сообщение
(1) То есть в этой функции нельзя писать длительно исполняющийся код?
Нельзя, но если очень хочется писать именно там, то можно быстренько стартовать новый поток который сделает всю работу.
Цитата Сообщение от bt1024 Посмотреть сообщение
Тогда как поступить?
Можно сделать так как написали вы, или использовать класс IntentService:

Java
1
2
3
4
5
6
7
8
9
10
11
12
public class MySrv extends IntentService {
 
  public MySrv() {
      super("MyThreadName");
      setIntentRedelivery(true);
  }
 
  @Override
  protected void onHandleIntent(Intent intent) {
      System.out.println("Hello from " + Thread.currentThread());
  }
}
Теперь когда вы стартуете сервис при помощи startService, каждый раз вызывается метод onHandleIntent в который передается ваш интент. И при это код выполняется в одном и том же отдельном потоке (см лог):

01-07 10:35:07.615: I/System.out(17408): Hello from Thread[IntentService[MyThreadName],5,main]
01-07 10:35:07.735: I/System.out(17408): Hello from Thread[IntentService[MyThreadName],5,main]
01-07 10:35:07.845: I/System.out(17408): Hello from Thread[IntentService[MyThreadName],5,main]
01-07 10:35:07.975: I/System.out(17408): Hello from Thread[IntentService[MyThreadName],5,main]


(3) Если в исполняющем потоке надо работать с интернет, все вызовы опять надо заворачивать в AsyncTask?
Работать с интернетом можно в любом потоке кроме главного.

как тогда из Activity передать данные (настройки работы) в исполняющий поток?
Да через тот же самый интент например. Способов множество, ведь все потоки находятся в пределах одного процесса, а значит у них общая память с которой все они могут равноправно работать.

В сервис через Bind, а из сервиса в исполняющий поток через handle?
Если нужно передать данные из сервиса в активити я обычно использую Handler, но есть и другие варианты, например через вызов метода sendBroadcast() в сервисе. А в активити настроен бродкаст ресивер который ловит интенты отсылаемые сервисом.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru