Android - 从其他应用程序恢复 activity
Android - Resume an activity from other application
我有两个应用程序 A(activity A1、A2、A3) 和 B(activity B1、B2)。
我的流程是这样的:
A1 -> A2 -> A3 -> B1 -> B2
我的问题是:从activity B2,如何恢复到现有的activity A3 - 不创建新的activity A3 - 比如使用多任务切换2个应用程序按钮?
谢谢,
Intent 是 Android 中的强大机制,允许您从另一个进程启动活动。
您只需要安装包和 class 名称。就这些了。
例如:
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);
此外,您可能需要 Activity A3 的 singleInstance | singleTask 启动模式。
当您需要启动 A3 时,您需要设置 FLAG_ACTIVITY_REORDER_TO_FRONT 到您的 Intent,A3 将被重新排序到前面。
如何在 Android 中制作 IRC : read here
重定向到 B1 -> B2 时调用 finish();在 activity B1..
您需要 singleTop 来使 activity 始终使用相同的实例,然后 activity onNewIntent 将在我们从另一个 activity return 那里触发(通过意图)
<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);
}
}
首先从 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
我有两个应用程序 A(activity A1、A2、A3) 和 B(activity B1、B2)。 我的流程是这样的:
A1 -> A2 -> A3 -> B1 -> B2
我的问题是:从activity B2,如何恢复到现有的activity A3 - 不创建新的activity A3 - 比如使用多任务切换2个应用程序按钮?
谢谢,
Intent 是 Android 中的强大机制,允许您从另一个进程启动活动。
您只需要安装包和 class 名称。就这些了。
例如:
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);
此外,您可能需要 Activity A3 的 singleInstance | singleTask 启动模式。
当您需要启动 A3 时,您需要设置 FLAG_ACTIVITY_REORDER_TO_FRONT 到您的 Intent,A3 将被重新排序到前面。
如何在 Android 中制作 IRC : read here
重定向到 B1 -> B2 时调用 finish();在 activity B1..
您需要 singleTop 来使 activity 始终使用相同的实例,然后 activity onNewIntent 将在我们从另一个 activity return 那里触发(通过意图)
<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);
}
}
首先从 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