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

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

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

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

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

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

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

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

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

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

Как передать intent данные в Service? - Программирование Android
Здравствуйте! как передать intent данные в класс с расширением Service? Стандартным способом кажется не получится передать через putextra...

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

4
Hank
59 / 50 / 4
Регистрация: 28.12.2011
Сообщений: 289
20.05.2016, 13:21 #2
Цитата Сообщение от Serg_123 Посмотреть сообщение
Как передать данные в поток? (изменить идентификатор?)
откуда передать?
как вы запускаете сервис?
0
Serg_123
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 19
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
59 / 50 / 4
Регистрация: 28.12.2011
Сообщений: 289
21.05.2016, 01:22 #4
Подключайся к своей службе через ServiceConnection и делай с ее объектами что хочешь.
1
Serg_123
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 19
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
Привет! Вот еще темы с ответами:

Как передать данные в Activity из другого класса - Программирование Android
При нажатии на кнопку, создается активити orgAdapter = new OrgAdapter(this, orgs); GridView gridView = (GridView)...

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

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

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


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

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

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