Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Serg_123
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 23
#1

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

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

Доброго всем дня) Прошу совета.
Есть активити. Она запускает сервис,в котором стартует поток, опрашивающий удаленный сервер по заранее определённому(переданному в сервис) идентификатору. Как передать данные в поток? (изменить идентификатор?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2016, 11:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как передать данные в thread? (Программирование Android):

Передать данные в работающий thread из другого thread
Есть 2 потока запущенные разными классами и из потока А нужно сообщить потоку Б...

Как вытащить данные из потока. Cant create handler inside thread that has not called Looper.prepare()
В общем столкнулся со следующей неприятной проблемой. Есть клиент. Он...

Как передать данные в EditText
Есть активность из которой необходимо передать данные в активити планировщика...

Как поучить/передать данные в/из BroadcastReceiver ?
Например, есть BroadcastReceiver и есть Сервис. BroadcastReceiver получает...

Как передать intent данные в Service?
Здравствуйте! как передать intent данные в класс с расширением Service?...

Как передать данные из Fragments в DialogFragment
Пробовал с помощью Intent , Bundle , но не получалось (либо руки кривые) ....

4
Hank
63 / 54 / 4
Регистрация: 28.12.2011
Сообщений: 297
20.05.2016, 13:21 #2
Цитата Сообщение от Serg_123 Посмотреть сообщение
Как передать данные в поток? (изменить идентификатор?)
откуда передать?
как вы запускаете сервис?
0
Serg_123
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 23
20.05.2016, 14:42  [ТС] #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
0
Hank
63 / 54 / 4
Регистрация: 28.12.2011
Сообщений: 297
21.05.2016, 01:22 #4
Подключайся к своей службе через ServiceConnection и делай с ее объектами что хочешь.
1
Serg_123
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 23
25.05.2016, 12:39  [ТС] #5
проблему решил методом остановки сервиса и запуска с новыми параметрами
0
25.05.2016, 12:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2016, 12:39
Привет! Вот еще темы с решениями:

Как передать данные в определенный инстанс класса?
Проект который я использую https://github.com/chrisbanes/cheesesquare. Я...

Как передать данные в Activity из другого класса
При нажатии на кнопку, создается активити orgAdapter = new OrgAdapter(this,...

Есть класс унаследованный от View - как туда передать данные?
getIntent() не работает.

Как передать в функцию название массива в который будут грузиться данные из файла?
Шесть файлов с данными, нужно загрузить каждый в отдельный массив. Вызываю...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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