powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Почему onActivityResult не вызывается после перезапуска приложения ?
25 сообщений из 36, страница 1 из 2
Почему onActivityResult не вызывается после перезапуска приложения ?
    #39105158
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Залип и не понимаю, почему после перезапуска приложения перестают поступать данные из сервиса ?

Активити:

Код: 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
Почему onActivityResult не вызывается после перезапуска приложения ?
    #39105171
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korshunпочему после перезапуска приложения перестают поступать данные из сервиса ?
В логкат не смотришь?
...
Рейтинг: 0 / 0
Почему onActivityResult не вызывается после перезапуска приложения ?
    #39105179
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там вывод идет, сам сервис работает прекрасно.
Лог:
Код: 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
Почему onActivityResult не вызывается после перезапуска приложения ?
    #39105184
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korshun
Код: java
1.
//предполагаю, что надо "руками" вызывать onActivityResult перед вызовом onResume - как это сделать ?


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

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


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


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

Ок.

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

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


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