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

Не работает остановка потока! - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Offline-карты http://www.cyberforum.ru/android-dev/thread1754584.html
Здравствуйте! Подскажите, как сделать оффлайн карты для своего города? Карты должны быть наподобии 2гис. Заранее спасибо!
Программирование Android Шифрование трафика между телефоном и БС Народ, всем салют! Пишу диплом и программу к нему. В приложение нужно добавить функцию, которая показывает статус шифрования (включено или отключено) трафика между телефоном и базовой станицей.... http://www.cyberforum.ru/android-dev/thread1754583.html
Использование акселерометра Программирование Android
Пытаюсь вычислить перемещение устройства через акселерометр, но dt получается крайне большим, из за чего значения перемещения получаются с крайне большой погрешностью.Можно это как то исправить? ...
Передать данные при клике на listview в другое activity Программирование Android
Подсксжите пожалуйста, как мне при клике на listview заполненный с помощью sdimplecursoradapter передеавать данные в другое activity для вывода подробной информации? Вот что я делаю в главном...
Программирование Android Можно ли написать веб сервер на Яве для клиента на Андроид,имея под рукой только телефон на том самом андроид? http://www.cyberforum.ru/android-dev/thread1754083.html
Уважаемые гуру программирования, если можно, пожалуйста, напишите поподробнее- какой программой компилировать код, какой лучше выбрать домен, и подобные неизвестные мне детали, если таковые имеются,...
Программирование Android WebView Full Добрый вечер. У меня такая проблема возникла с выводом текста из WebView. Как сделать чтобы WebView вставал в фиксированное ему место и работал оттуда как это делает TextView. ... подробнее

Показать сообщение отдельно
Serg_123
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 19

Не работает остановка потока! - Программирование Android

04.06.2016, 20:08. Просмотров 178. Ответов 2
Метки (Все метки)

Помогите пожалуйста! Укажите на ошибку! Почему не останавливается поток????
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
public class FoneService extends Service {
    // ИМЯ СЕРВЕРА (url зарегистрированного нами сайта)
    // например [url]http://l29340eb.bget.ru[/url]
 
 
    String server_name = "http://46.59.45.14/gates";    
 
    HttpURLConnection conn;
    Thread thr;
    String my_var, id_visova, nom_tel, flag_lgota,  cod_car;
 
//    Integer id_visova;
 
 
 
    @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 - запуск сервиса");
 
        // создадим и покажем notification
        // это позволит стать сервису "бессмертным"
        // и будет визуально видно в трее
//        Intent iN = new Intent(getApplicationContext(), MainActivity.class);
        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();
        Log.i("chat",
                "+ FoneService --------------- после startloop " );
 
    }
    @Override
    public void     onDestroy (){
 
        thr.interrupt();
 
    }
 
 
 
    // запуск потока, внутри которого будет происходить
    // регулярное соединение с сервером для чтения новых
    // сообщений.
    // если сообщения найдены - отправим броадкаст для обновления
 
 
    private void startLoop() {
 
        thr = new Thread(new Runnable() {
 
            // ansver = ответ на запрос
            // lnk = линк с параметрами
            // my_var = моя переменная
            String ansver, lnk;
            @Override
            public void run() {
//                while (!thr.isInterrupted()) {
                while  (!Thread.currentThread().isInterrupted()) {
                    System.out.println("Привет из потока " + Thread.currentThread().getName());
//                while (true) { // стартуем бесконечный цикл
 
                    // создаем соединение ---------------------------------->
                    try {
                        lnk = server_name + "/chat.php?action=select&car="
                                + URLEncoder.encode(cod_car, "UTF-8");
                        Log.i("chat",
                                "+ FoneService --------------- ОТКРОЕМ СОЕДИНЕНИЕ "+cod_car);
 
                        conn = (HttpURLConnection) new URL(lnk)
                                .openConnection();
                        conn.setReadTimeout(10000);
                        conn.setConnectTimeout(15000);
                        conn.setRequestMethod("POST");
                        conn.setRequestProperty("User-Agent", "Mozilla/5.0");
                        conn.setDoInput(true);
                        conn.connect();
 
                    } catch (Exception e) {
                        Log.i("chat", "+ FoneService ошибка: " + e.getMessage());
                    }
                    // получаем ответ ---------------------------------->
                    try {
                        InputStream is = conn.getInputStream();
                        BufferedReader br = new BufferedReader(
                                new InputStreamReader(is, "UTF-8"));
                        StringBuilder sb = new StringBuilder();
                        String bfr_st = null;
                        while ((bfr_st = br.readLine()) != null) {
                            sb.append(bfr_st);
                        }
 
                        Log.i("chat", "+ FoneService - полный ответ сервера:\n"
                                + sb.toString());
 
                        // сформируем ответ сервера в string
                        // обрежем в полученном ответе все, что находится за "]"
                        // это необходимо, т.к. json ответ приходит с мусором
                        // и если этот мусор не убрать - будет невалидным
                        ansver = sb.toString();
                        ansver = ansver.substring(0, ansver.indexOf("]") + 1);
 
                        is.close(); // закроем поток
                        br.close(); // закроем буфер
 
                    } catch (Exception e) {
                        Log.i("chat", "+ FoneService ошибка: " + e.getMessage());
                    } finally {
                        conn.disconnect();
                        Log.i("chat",
                                "+ FoneService --------------- ЗАКРОЕМ СОЕДИНЕНИЕ");
                    }
 
                    // запишем ответ  ---------------------------------->
                    if (ansver != null && !ansver.trim().equals("")) {
 
                        Log.i("chat",
                                "+ FoneService ---------- ответ содержит JSON:");
 
                        try {
                            // ответ превратим в JSON массив
                            JSONArray ja = new JSONArray(ansver);
                            JSONObject jo;
 
                            Integer i = 0;
 
                            while (i < ja.length()) {
 
                                // разберем JSON массив построчно
                                jo = ja.getJSONObject(i);
 
                                // создадим новое сообщение
 
                                my_var =  jo.getString("np_pod").trim()+" "+jo.getString("ulisa_pod").trim()+" "+
                                        jo.getString("dom_pod").trim()+" "+jo.getString("korp_pod").trim();
                                id_visova = jo.getString("id");
                                nom_tel = jo.getString("tel_client");
                                flag_lgota = jo.getString ("lgota");
 
 
 
                                i++;
 
                                // отправим броадкаст для ChatActivity
                                // если она открыта - она обновить ListView
                                Intent intent2 = new Intent("com.example.papa.action.UPDATE_ListView");
                                intent2.putExtra("dannie_visova",my_var);
                                intent2.putExtra("id_visova",id_visova);
                                intent2.putExtra("telefon",nom_tel);
                                intent2.putExtra("lgota",flag_lgota);
                                sendBroadcast(intent2);
 
 
                            }
                        } 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 - ошибка процесса(перед return): "
                                        + e.getMessage());
                        return;
 
                    }
                }
            }
        });
 
        thr.setDaemon(true);
        thr.start();

return не отрабатывается. почему???

Добавлено через 36 минут
проблема оказалась иной. судя по отладчику, потоков запускается два! как так??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru