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

Передача данных из активности в сервис - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
21.12.2013, 17:10     Передача данных из активности в сервис #1
Есть активность и сервис, который запускается из этой активности. Нужно передать данные из активности в сервис.
Пробовал так.
В MainActivity :
Java
1
 startService(new Intent(this, MyService.class).putExtra("QUOTES", QUOTES));
В сервисе
Java
1
2
Intent intent = getIntent(); // не работает getIntent для сервиса
QUOTES=intent.getStringExtra("QUOTES");
Как бы попроще передать эти данные. Хотелось бы разобрать какой то метод, который подошел бы на любой случай - как передача между активностями, так и сервисами даже из разных приложений.

Добавлено через 4 часа 20 минут
думаю это вариан
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
...
//наследуется от Service, значит IBinder
идентифицирующий
//данный Messenger передастся по методу
onServiceConnected
public class MyService extends Service
{
...
@Override
public IBinder onBind(Intent arg0)
{
return mMessenger.getBinder();
}
//передаем в конструктор
обработчик полученных от клиента
сообщений
final private Messenger mMessenger
= new Messenger(mIncomingHandler);
//собственно сам обработчик
final Handler mIncomingHandler
= new Handler()
{
@Override
public void handleMessage
(Message msg)
{
switch (msg.what)
{
case 0:
...
break ;
case 1:
...
break ;
case 2:
...
break ;
}
}
};
//метод посылки сообщения клиенту
private void sendMessage(Messenger
msgr, Message msg)
{
try
{
msgr.send(msg);
} catch (RemoteException e)
{}
}
...
}
Клиент будет иметь нечто навроде:
...
//реализует интерфейс ServiceConnection,
значит
//есть методы получающие IBinder сервиса
public class BaseActivity extends
Activity implements ServiceConnection
{
private Messenger mService;
...
//вот собственно этот метод
@Override
public void onServiceConnected
(ComponentName name, IBinder service)
{
//передаем в конструктор
IBinder сервиса
mService = new Messenger
(service);
            final Message msg =
Message.obtain( null , 0);
msg.replyTo = mMessenger;
sendMessageToService(msg);
}
final private Messenger mMessenger
= new Messenger(mIncomingHandler);
//обработчик полученных от сервиса
сообщений
     final Handler mIncomingHandler
= new Handler()
{
@Override
public void handleMessage
(Message msg)
{
switch (msg.what)
{
case 0:
...
break;
case 1:
...
break;
case 2:
...
break;
}
}
};
//метод посылки сообщения сервису
protected void sendMessageToService
(Message msg)
{
msg.replyTo = mMessenger;
try
{
mService.send(msg);
} catch (RemoteException
e) {}
}
...
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2013, 17:10     Передача данных из активности в сервис
Посмотрите здесь:

Android Layout передача данных
Передача данных звуком Android
Передача данных в другое активити Android
Передача данных по Bluetooth Android
Передача данных из одной активности в третью Android
Android Соединение с сервером, передача данных
Android Передача данных из базы JSON
Передача данных на веб страницу Android
Передача данных из Activity в Fragment Android
Передача данных Android
Передача данных по Wifi Android
Android Интернет. Передача данных

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru