Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Подскажите по работе с сервисом средствами PendingIntent / 6 сообщений из 6, страница 1 из 1
22.07.2015, 07:58
    #39012941
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по работе с сервисом средствами PendingIntent
Есть небольшое приложение с одной Activity, которое получает данные из сервиса средствами PI.
Получается так, что когда приложение работает, обмен через onActivityResult тоже прекрасно работает, но если приложение перезапустить, то данные из сервиса уже не "подхватываются", хотя сам сервис продолжает прекрасно работать.
Как сделать, что бы все работало после перезапусков приложения ? Заранее благодарю!
...
Рейтинг: 0 / 0
22.07.2015, 08:48
    #39012957
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по работе с сервисом средствами PendingIntent
Как ни крути, а без кода можно только на гуще гадать.
...
Рейтинг: 0 / 0
22.07.2015, 10:36
    #39013099
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по работе с сервисом средствами PendingIntent
Весь код копировать не буду, по порядку просто покажу, что делаю.


При выборе пункта меню создаем интент, засовываем в него PI и запускаем сервис:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
PendingIntent piRequest, piCounter, piTotal;

                filesControlServiceIntent =             new Intent(this, FilesControl.class);
                piRequest =                             createPendingResult(CODE_REQUEST, filesControlServiceIntent, 0);
                piCounter =                             createPendingResult(CODE_COUNTER, filesControlServiceIntent, 0);
                piTotal =                               createPendingResult(CODE_TOTAL, filesControlServiceIntent, 0);

                filesControlServiceIntent
                        .putExtra(DOWNLOAD_TYPE, 0)
                        .putExtra(PI_REQUEST, piRequest)
                        .putExtra(PI_COUNTER, piCounter)
                        .putExtra(PI_TOTAL, piTotal);

                startService(filesControlServiceIntent);



В сервисе все это принимаем, достаем и обрабатываем:
Код: 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.
    @Override
    public int onStartCommand(Intent intent, int flags, final int startId) {

        objectToDownload =                              intent.getIntExtra(Root.DOWNLOAD_TYPE, 0);
        piRequest =                                     intent.getParcelableExtra(Root.PI_REQUEST);
        piCounter =                                     intent.getParcelableExtra(Root.PI_COUNTER);
        piTotal =                                       intent.getParcelableExtra(Root.PI_TOTAL);

        if(checkConnection()) {

            new Thread(new Runnable() {
                @Override
                public void run() {


                    switch (objectToDownload) {

                        case 0:
                            queryAllFiles(startId);
                            break;


                        default:
                            queryOneFile(objectToDownload, startId);
                            break;

                    }

                }


            }).start();

        }

        return START_STICKY;
    }




В onActivityResult обрабатываем ответы сервиса:
Код: 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.
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        LinearLayout.LayoutParams loparams =                (LinearLayout.LayoutParams) updateBlock.getLayoutParams();


        switch (requestCode) {


            //  При requestCode = 0 получаем статусы операции
            case CODE_REQUEST:
                if (resultCode == STATUS_CONNECT) {
                    connectStatusLabel.setText(getResources().getText(R.string.update_connecting));

                    loparams.weight =                       1;

                }

                if (resultCode == STATUS_DISCONNECT) {

                    connectStatusLabel.setText(getResources().getText(R.string.update_done));
                    dwnlCancelButton.setText(getResources().getText(R.string.dialog_close));
                }

                totalFiles =                                "";

                break;



            //  При requestCode = 1 обновляем счетчик закачанных файлов
            case CODE_COUNTER:

                String t =                                  new Formatter()
                                                                .format(
                                                                        getResources().getString(R.string.update_continue),
                                                                        String.valueOf(resultCode + "/" + totalFiles)
                                                                )
                                                                .toString();
                connectStatusLabel.setText(t);

                break;



            //  При requestCode = 2 получаем общее кол-во файлов
            case CODE_TOTAL:

                totalFiles =                                String.valueOf(resultCode);

                dwnlCancelButton.setEnabled(true);

                break;
        }

        updateBlock.setLayoutParams(loparams);
    }
...
Рейтинг: 0 / 0
22.07.2015, 12:13
    #39013233
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по работе с сервисом средствами PendingIntent
Самое интересное и не показал...

Читал тут?
...
Рейтинг: 0 / 0
22.07.2015, 12:18
    #39013240
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по работе с сервисом средствами PendingIntent
Ага, читал, все честно стырил именно оттуда :)
Но там же вроде не рассматривается вариант с перезапуском приложения. А чего я самого интересно не показал ?
...
Рейтинг: 0 / 0
22.07.2015, 12:21
    #39013243
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по работе с сервисом средствами PendingIntent
Перекрой создание, паузу, рестарт и уничтожение активности и сервиса и подключение/отключение и увидишь, где промахнулся.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Подскажите по работе с сервисом средствами PendingIntent / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]