Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Почему onActivityResult не вызывается после перезапуска приложения ? / 25 сообщений из 36, страница 1 из 2
17.11.2015, 08:53
    #39105158
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему 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.
public class MainActivity
        extends AppCompatActivity {


    private TextView tv;
    private Button btn;

    private final int               CODE_REQUEST = 0;
    public static final String      PI_REQUEST =                        "piRequest";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.tv);
        btn = (Button) findViewById(R.id.btn);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                PendingIntent piRequest;

                Intent intent =      new Intent(getBaseContext(), MyService.class);
                piRequest =                         createPendingResult(CODE_REQUEST, intent , 0);

                intent 
                        .putExtra(PI_REQUEST, piRequest);

                startService(intent );


            }
        });
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);

        tv.setText(resultCode + "");

    }

}



Сервис:
Код: 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.
public class MyService
        extends Service {


    private PendingIntent piRequest;


    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        piRequest =                                     intent.getParcelableExtra(MainActivity.PI_REQUEST);

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

                for(int x = 0; x < 30; x++) {

                    try {
                        piRequest.send(x);
                    } catch (PendingIntent.CanceledException e) {
                        e.printStackTrace();
                    }


                    try {
                        TimeUnit.SECONDS.sleep(1);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }

            }
        }).start();


        return START_STICKY;
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
...
Рейтинг: 0 / 0
17.11.2015, 09:09
    #39105171
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
korshunпочему после перезапуска приложения перестают поступать данные из сервиса ?
В логкат не смотришь?
...
Рейтинг: 0 / 0
17.11.2015, 09:14
    #39105179
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему 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.
//запуск приложения
11-17 11:15:04.485 19128-19128/ru.korshun.testservice I/System.out: myLog onCreate
11-17 11:15:04.485 19128-19128/ru.korshun.testservice I/System.out: myLog onStart
11-17 11:15:04.485 19128-19128/ru.korshun.testservice I/System.out: myLog onResume

//нажали кнопку и запустили сервис
11-17 11:15:16.460 19128-19457/ru.korshun.testservice I/System.out: myLog START
11-17 11:15:16.460 19128-19457/ru.korshun.testservice I/System.out: myLog 0
11-17 11:15:16.460 19128-19128/ru.korshun.testservice I/System.out: myLog onPause
11-17 11:15:16.460 19128-19128/ru.korshun.testservice I/System.out: myLog onActivityResult
11-17 11:15:16.460 19128-19128/ru.korshun.testservice I/System.out: myLog onResume
11-17 11:15:17.460 19128-19457/ru.korshun.testservice I/System.out: myLog 1
11-17 11:15:17.465 19128-19128/ru.korshun.testservice I/System.out: myLog onPause
11-17 11:15:17.465 19128-19128/ru.korshun.testservice I/System.out: myLog onActivityResult
11-17 11:15:17.465 19128-19128/ru.korshun.testservice I/System.out: myLog onResume
11-17 11:15:18.465 19128-19457/ru.korshun.testservice I/System.out: myLog 2
11-17 11:15:18.470 19128-19128/ru.korshun.testservice I/System.out: myLog onPause
11-17 11:15:18.470 19128-19128/ru.korshun.testservice I/System.out: myLog onActivityResult
11-17 11:15:18.470 19128-19128/ru.korshun.testservice I/System.out: myLog onResume
11-17 11:15:19.470 19128-19457/ru.korshun.testservice I/System.out: myLog 3
11-17 11:15:19.470 19128-19128/ru.korshun.testservice I/System.out: myLog onPause
11-17 11:15:19.470 19128-19128/ru.korshun.testservice I/System.out: myLog onActivityResult
11-17 11:15:19.470 19128-19128/ru.korshun.testservice I/System.out: myLog onResume
11-17 11:15:19.755 19128-19128/ru.korshun.testservice I/System.out: myLog onPause
11-17 11:15:20.470 19128-19457/ru.korshun.testservice I/System.out: myLog 4


//вышли из приложения
11-17 11:15:20.585 19128-19128/ru.korshun.testservice I/System.out: myLog onStop
11-17 11:15:20.585 19128-19128/ru.korshun.testservice I/System.out: myLog onDestroy
11-17 11:15:21.470 19128-19457/ru.korshun.testservice I/System.out: myLog 5
11-17 11:15:22.475 19128-19457/ru.korshun.testservice I/System.out: myLog 6
11-17 11:15:23.480 19128-19457/ru.korshun.testservice I/System.out: myLog 7
11-17 11:15:24.480 19128-19457/ru.korshun.testservice I/System.out: myLog 8
11-17 11:15:25.480 19128-19457/ru.korshun.testservice I/System.out: myLog 9
11-17 11:15:26.485 19128-19457/ru.korshun.testservice I/System.out: myLog 10


//запустили приложение - onActivityResult не вызывается
//предполагаю, что надо "руками" вызывать onActivityResult перед вызовом onResume - как это сделать ?
11-17 11:15:26.780 19128-19128/ru.korshun.testservice I/System.out: myLog onCreate
11-17 11:15:26.780 19128-19128/ru.korshun.testservice I/System.out: myLog onStart
11-17 11:15:26.780 19128-19128/ru.korshun.testservice I/System.out: myLog onResume
11-17 11:15:27.490 19128-19457/ru.korshun.testservice I/System.out: myLog 11
11-17 11:15:28.490 19128-19457/ru.korshun.testservice I/System.out: myLog 12
11-17 11:15:29.490 19128-19457/ru.korshun.testservice I/System.out: myLog 13
11-17 11:15:30.490 19128-19457/ru.korshun.testservice I/System.out: myLog 14
11-17 11:15:31.495 19128-19457/ru.korshun.testservice I/System.out: myLog 15
...
Рейтинг: 0 / 0
17.11.2015, 09:17
    #39105184
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
korshun
Код: java
1.
//предполагаю, что надо "руками" вызывать onActivityResult перед вызовом onResume - как это сделать ?


Жамкнуть по кнопке не пробовал? Именно она создает запрос к сервису, который умирает вместе с приложением.
...
Рейтинг: 0 / 0
17.11.2015, 09:19
    #39105186
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
Ну в том же Play Market'e при загрузке\обновлении приложений все работает после перезахода в приложение без всяких жамканий по кнопкам, что логично.
...
Рейтинг: 0 / 0
17.11.2015, 09:23
    #39105190
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
korshunНу в том же Play Market'e при загрузке\обновлении приложений все работает после перезахода в приложение без всяких жамканий по кнопкам, что логично.
Он то здесь при чем? Там куча сервисов, каждый отвечает за свое действие.
Часть за обновления самого маркета, часть за загрузку (при чем загружается системными средствами типа даунлоад менеджера), часть сервисов слушает событие "загрузка закончена" - они же дергают сервисы, которые создают иконки и прочие гадости.

Но ты видимо упустил из виду что я имел в виду: твой запрос к сервису умирает вместе с приложением. Создавай запрос вместе со стартом активности, а не по кнопке.
...
Рейтинг: 0 / 0
17.11.2015, 09:34
    #39105198
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
wadmanСоздавай запрос вместе со стартом активности, а не по кнопке.
Ок.
Навскидку, что первое в голову пришло:

Код: 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.
public class MainActivity
        extends AppCompatActivity {


    private TextView tv;
    private Button btn;

    private final int               CODE_REQUEST = 0;
    public static final String      PI_REQUEST =                        "piRequest";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.tv);
        btn = (Button) findViewById(R.id.btn);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                startService();

            }
        });
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);

        tv.setText(resultCode + "");

    }


    private void startService() {
        PendingIntent piRequest;

        Intent updateDbServiceIntent =      new Intent(getBaseContext(), MyService.class);
        piRequest =                         createPendingResult(CODE_REQUEST, updateDbServiceIntent, 0);

        updateDbServiceIntent
                .putExtra(PI_REQUEST, piRequest);

        startService(updateDbServiceIntent);
    }


    @Override
    protected void onStart() {
        if(MyService.isRunning) {
            startService();
        }
        super.onStart();
    }
}




Код: 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.
public class MyService
        extends Service {


    private PendingIntent piRequest;
    public static boolean isRunning = false;


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        piRequest =                                     intent.getParcelableExtra(MainActivity.PI_REQUEST);

        if(!isRunning) {
            new Thread(new Runnable() {
                @Override
                public void run() {

                    System.out.println("myLog START");
                    isRunning = true;

                    for (int x = 0; x < 30; x++) {

                        System.out.println("myLog " + x);

                        try {
                            piRequest.send(x);
                        } catch (PendingIntent.CanceledException e) {
                            e.printStackTrace();
                        }


                        try {
                            TimeUnit.SECONDS.sleep(1);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                    }

                    System.out.println("myLog FINISH");
                    isRunning = false;

                }
            }).start();
        }

        return START_STICKY;
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        isRunning = false;
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}




Насколько корректен такой способ ?
...
Рейтинг: 0 / 0
17.11.2015, 09:41
    #39105211
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
korshunНасколько корректен такой способ ?
Издеваешься?
korshun
Код: java
1.
2.
3.
       if(MyService.isRunning) {
            startService();
        }


Посвяти своему коду чуть больше, чем пару минут. Час или два хотя-бы...
...
Рейтинг: 0 / 0
17.11.2015, 09:43
    #39105213
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
Говорю же - "навскидку" :)
Что не так то, ты объясни пожалуйста по-человечески.
...
Рейтинг: 0 / 0
17.11.2015, 09:46
    #39105216
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
korshunЧто не так то, ты объясни пожалуйста по-человечески.
Давай переведу: Если сервис запущен, то запустим его еще.
...
Рейтинг: 0 / 0
17.11.2015, 09:48
    #39105220
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
Ок, тогда возвращаемся назад: "Создавай запрос вместе со стартом активности" - что ты тут тогда подразумеваешь под "создавай запрос" ?
...
Рейтинг: 0 / 0
17.11.2015, 09:55
    #39105230
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
korshunчто ты тут тогда подразумеваешь под "создавай запрос" ?
Именно это и подразумеваю, только за маленьким исключением:
korshun
Код: java
1.
2.
3.
       if(!MyService.isRunning) {
            startService();
        }


Если сервис не запущен, то запустим его.
...
Рейтинг: 0 / 0
17.11.2015, 10:01
    #39105237
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
wadmanЕсли сервис не запущен, то запустим его.
Погоди, дык мне как раз наоборот надо:
- если сервис НЕ запущен, то при старте активити делать вообще ничего не надо. Сервис при надобности запускает юзер кликом по кнопке.
- если сервис запущен, то при старте активити надо к этому сервису "приконнектиться" и получать результат. КАК ? :)
...
Рейтинг: 0 / 0
17.11.2015, 10:02
    #39105240
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
Мне не нужно, что бы ты мне решение прям сваял, ты просто скажи как это делается и в какую сторону надо гуглить.
...
Рейтинг: 0 / 0
17.11.2015, 10:45
    #39105295
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
korshunПогоди, дык мне как раз наоборот надо:
- если сервис НЕ запущен, то при старте активити делать вообще ничего не надо. Сервис при надобности запускает юзер кликом по кнопке.
Мне кажется, тебе нужно проснуться.
Прочитай этот код раз 100...
korshun
Код: java
1.
2.
3.
4.
5.
6.
7.
    @Override
    protected void onStart() {
        if(MyService.isRunning) {
            startService();
        }
        super.onStart();
    }
...
Рейтинг: 0 / 0
17.11.2015, 11:22
    #39105335
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
Этот код прекрасно справляется с поставленной задачей, жаль, что ты внятно не можешь объяснить, что в нем не так.
...
Рейтинг: 0 / 0
17.11.2015, 13:06
    #39105470
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
Давай сначала: задача ведь явно не в том, чтобы кнопочку для запуска сервиса сделать...
...
Рейтинг: 0 / 0
17.11.2015, 13:15
    #39105480
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
Я просто хотел разобраться в том, как после перезапуска приложения восстановить связь с работающим сервисом и продолжить принимать от него данные.
Разобрался вроде :)
...
Рейтинг: 0 / 0
17.11.2015, 16:29
    #39105752
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
korshunРазобрался вроде :)
Дак поделился-бы. :)
...
Рейтинг: 0 / 0
17.11.2015, 16:57
    #39105779
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
Так это то, что ты камнями закидал :)
Проверяю в onStart метку о том, работает сервис или нет, если работает - создаю PendingIntent и передаю его в сервис, где его ответы начинает уже обрабатывать onActivityResult. Пример, что я с утра накидал, грубый достаточно конечно, но смысл понятен, по крайней мере мне :)
В общем еще раз говорю, что все работает прекрасно, не знаю уж, что тебе не понравилось.
...
Рейтинг: 0 / 0
17.11.2015, 16:59
    #39105786
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
з.ы. Т.е. я не имею в виду конечно, что это прям на 100% "валидный" способ решения этой задачи, но на ум мне ничего другого не приходит.
...
Рейтинг: 0 / 0
18.11.2015, 09:07
    #39106163
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
korshunВ общем еще раз говорю, что все работает прекрасно, не знаю уж, что тебе не понравилось.
Чуть логика хромает, либо английский. Потому как запускают сервис обычно, когда он не запущен. 18427523
Ну работает и ладно.
...
Рейтинг: 0 / 0
18.11.2015, 18:04
    #39107076
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
Так я его не запускаю вообще-то, он уже запущен, я лишь отправляю ему новый PI для связи с Activity.
Ты сам бы как это сделал ?:) Ответа не услышал до сих пор :)
...
Рейтинг: 0 / 0
18.11.2015, 18:55
    #39107128
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
korshun,
отвечу, когда минимальное тз увижу. :)
...
Рейтинг: 0 / 0
18.11.2015, 19:19
    #39107148
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему onActivityResult не вызывается после перезапуска приложения ?
wadmankorshun,
отвечу, когда минимальное тз увижу. :)

Ок.

Реализовать примитивное приложение: Activity + Сервис. В Activity расположить Button и TextView, в сервисе реализовать цикл от 0 до 100, при каждой итерации которого передавать текущее значение в Activity и выводить его в TextVew. Для наглядности после каждой итерации sleep'ать цикл на 200-300 мс (имитация загрузки файлов).
Сервис запускается при клике на кнопку + после перезапуска приложения передача данных из сервиса в Activity (вывод значения в TextView) должна возобновляться с текущего значения цикла.

Пойдет ?))
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Почему onActivityResult не вызывается после перезапуска приложения ? / 25 сообщений из 36, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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