Android - возобновить активность из другого приложения

У меня есть два приложения A(деятельность A1, A2, A3) и B(деятельность B1, B2). Мой процесс таков:

A1 -> A2 -> A3 -> B1 -> B2

У меня вопрос: из упражнения B2, как вернуться к существующему мероприятию A3 - не создавать новое занятие A3 - например, переключение 2 приложений с помощью кнопки с несколькими задачами?

Спасибо,

4 ответа

Решение

Вам нужен singleTop, чтобы действие всегда использовало один и тот же экземпляр, тогда в этом действии onNewIntent будет запускаться всякий раз, когда мы возвращаемся туда из другого действия (через намерение)

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="..." >
<application ...>
    <!-- android:launchMode="singleTop" makes sure we reuse the same instance -->
    <activity android:name=".A3Activity" android:label="@string/app_name"
        android:launchMode="singleTop">...</activity>
    ...
</application>


public class A3Activity extends Activity {
    @Override
    protected void onNewIntent(Intent intent) {
        //This is triggered onyl when re-launched
        super.onNewIntent(intent);
        //do anything new here
    }
}

public class B2Activity extends Activity {

    public void someMethod() {
        //This relaunches the A3 activity from same app
        //Intent intent = new Intent(this, A3Activity.class);

        //This does it from the other app
        Intent intent = new Intent(
        intent.setComponent(new ComponentName("com.anh", "com.anh.A3Activity"));
        startActivity(intent);
    } 

}

Intent - это мощный механизм в Android, который позволяет вам запускать действия из другого процесса.

Вам просто нужно установить пакет и имя класса. Это все.

Например:

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);

Также вам может понадобиться один экземпляр | режим запуска singleTask вашей Деятельности A3.

Когда вам нужно запустить A3, вам нужно настроить FLAG_ACTIVITY_REORDER_TO_FRONT для вашего намерения, и A3 будет переупорядочен вперед.

Как сделать IRC в Android: читайте здесь

Сначала добраться от B2 до B1 нужно

Intent intent = new Intent(this, B1.Class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("fromB",true);
startActivity(intent);
finish(); 

когда вы в B1 один в onCreate поставить это

 Bundle b = getIntent().getExtras();
 if(b.getBoolean()){
   Intent intent = new Intent(this, A3.Class);
   intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   intent.putExtra("fromB",true);
   startActivity(intent);
   finish(); 
 }

Я думаю, что это поможет:D

При перенаправлении на B1 -> B2 вызывается finish(); в деятельности B1..

Другие вопросы по тегам