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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Serg_123
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 19
#1

Как передать данные в thread? - Программирование Android

20.05.2016, 11:58. Просмотров 101. Ответов 4
Метки нет (Все метки)

Доброго всем дня) Прошу совета.
Есть активити. Она запускает сервис,в котором стартует поток, опрашивающий удаленный сервер по заранее определённому(переданному в сервис) идентификатору. Как передать данные в поток? (изменить идентификатор?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2016, 11:58     Как передать данные в thread?
Посмотрите здесь:
Передать данные в работающий thread из другого thread Android
Android Как вытащить данные из потока. Cant create handler inside thread that has not called Looper.prepare()
Android Как передать данные в EditText
Как поучить/передать данные в/из BroadcastReceiver ? Android
Android Как передать intent данные в Service?
Как передать данные из Fragments в DialogFragment Android
Android Как передать данные в Activity из другого класса
Android Как передать данные в определенный инстанс класса?
Android Есть класс унаследованный от View - как туда передать данные?
Android Как передать в функцию название массива в который будут грузиться данные из файла?
Android Передать данные из диалога
Передать данные в активити Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hank
49 / 40 / 3
Регистрация: 28.12.2011
Сообщений: 229
20.05.2016, 13:21     Как передать данные в thread? #2
Цитата Сообщение от Serg_123 Посмотреть сообщение
Как передать данные в поток? (изменить идентификатор?)
откуда передать?
как вы запускаете сервис?
Serg_123
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 19
20.05.2016, 14:42  [ТС]     Как передать данные в thread? #3
это активити
Java
1
2
3
4
5
6
Intent intent = new Intent(MainActivity.this, FoneService.class);
intent.putExtra("cod_car", cod_car);
 
// запустим FoneService
 
startService(intent);

это сервис
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
115
116
117
public class FoneService extends Service {
// ИМЯ СЕРВЕРА 
 
String server_name = "http://xx.xx.xx.xx/gates";
 
HttpURLConnection conn;
Thread thr;
String my_var, id_visova, nom_tel, flag_lgota, cod_car;
 
@Override
public IBinder onBind(Intent intent) {
return null;
}
 
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void onStart(Intent intent, int startId) {
 
Log.i("chat", "+ FoneService - запуск сервиса");
 
 
 
Intent iN = new Intent();
cod_car = intent.getStringExtra("cod_car");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pI = PendingIntent.getActivity(getApplicationContext(),
0, iN, PendingIntent.FLAG_CANCEL_CURRENT);
Notification.Builder bI = new Notification.Builder(
getApplicationContext());
bI.setContentIntent(pI)
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getApplicationContext().getResources(), R.mipmap.ic_launcher))
.setAutoCancel(true)
.setContentTitle(getResources().getString(R.string.fon_msg))
.setContentText("Работаю...");
Notification notification = bI.build();
startForeground(101, notification);
 
startLoop();
 
}
 
 
// запуск потока, внутри которого будет происходить
// регулярное соединение с сервером для чтения новых
// сообщений.
// если сообщения найдены - отправим броадкаст для обновления
private void startLoop() {
 
 
thr = new Thread(new Runnable() {
String ansver, lnk;
 
public void run() {
while (true) { // стартуем бесконечный цикл
 
// создаем соединение ---------------------------------->
try {
//код 
} catch (Exception e) {
Log.i("chat", "+ FoneService ошибка: " + e.getMessage());
}
// получаем ответ ---------------------------------->
try {
//код
}
 
Log.i("chat", "+ FoneService - полный ответ сервера:\n"
+ sb.toString());
 
 
} catch (Exception e) {
Log.i("chat", "+ FoneService ошибка: " + e.getMessage());
} finally {
conn.disconnect();
Log.i("chat",
"+ FoneService --------------- ЗАКРОЕМ СОЕДИНЕНИЕ");
}
 
// запишем ответ ---------------------------------->
{
 
Log.i("chat",
"+ FoneService ---------- ответ содержит JSON:");
 
try {
// ответ превратим в JSON массив
 
}
} catch (Exception e) {
// если ответ сервера не содержит валидный JSON
Log.i("chat",
"+ FoneService ---------- ошибка ответа сервера:\n"
+ e.getMessage());
}
} else {
// если ответ сервера пустой
Log.i("chat",
"+ FoneService ---------- ответ не содержит JSON!");
}
 
try {
Log.i("chat",
"+ ==================== пауза ===================");
Thread.sleep(15000);
} catch (Exception e) {
Log.i("chat",
"+ FoneService - ошибка процесса: "
+ e.getMessage());
}
}
}
}); 
 
thr.setDaemon(true);
 
thr.start();
немного почистил код сервиса. но суть, думаю,ясна

менять(передавать в поток) хочу cod_car
Hank
49 / 40 / 3
Регистрация: 28.12.2011
Сообщений: 229
21.05.2016, 01:22     Как передать данные в thread? #4
Подключайся к своей службе через ServiceConnection и делай с ее объектами что хочешь.
Serg_123
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 19
25.05.2016, 12:39  [ТС]     Как передать данные в thread? #5
проблему решил методом остановки сервиса и запуска с новыми параметрами
Yandex
Объявления
25.05.2016, 12:39     Как передать данные в thread?
Ответ Создать тему
Опции темы

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