У вас есть несколько вопросов, ИМХО.
и инициировал функцию onPause (), которая super.onPause (); moveTaskToBack (истина);
Это довольно странное поведение. Почему ты это делаешь?
Как только пользователь взаимодействует с новым экземпляром, программа аварийно завершает работу, поскольку фоновая версия уже запущена, что вызывает конфликты.
Тогда все, что делалось в исходном упражнении, вообще не должно быть в занятии, а в служении. Если у вас больше нет активности на переднем плане, вероятность того, что Android завершит ваш процесс для освобождения памяти, будет довольно высокой и может произойти довольно быстро, в зависимости от того, что еще происходит. Вы, кажется, зависите от того, что старое занятие каким-то образом еще что-то делает. «Фоновая версия» действия не должна делать ничего, что могло бы повлиять на любое другое действие в вашем процессе, и действие, не находящееся на переднем плане, не должно отвечать за действия, которые пользователь может пропустить, если действие переходит в «пуф».
При этом существуют и другие причины, по которым следует избегать использования второй копии своей деятельности, в частности навигации - в том виде, в каком она есть, когда пользователь нажимает кнопку НАЗАД из второй копии операции, он увидит первую копию и запутаться.
Мне нужна помощь, чтобы этот код искал уже запущенную версию моего приложения
Нет, вам "нужна помощь, чтобы этот код искал уже запущенную версию" вашей деятельности. Приложение не является деятельностью. Активность не приложение.
Добавление FLAG_ACTIVITY_CLEAR_TOP
и FLAG_ACTIVITY_SINGLE_TOP
к вашему Intent
решит это:
Intent i=new Intent(this, SuperMicProActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pi=PendingIntent.getActivity(this, 0, i, 0);
Это выведет вашу существующую деятельность на первый план и, при необходимости, избавит от других действий в вашей задаче.