1

I have application A and application B.

I launch B with an intent from A in this way:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.applicationB", "com.applicationB.MainActivity");
intent.putExtra(EXTRA_NAME,"name");
startActivity(intent);

When the user closes application A I want application B to close too. App B has JNI and uses exec() command.

I've tried android:sharedUserId but I got this error when app A tries to launch B with the code above:

Error running exec(). Command: [....] Working Directory: null Environment: (not null, it shows all the environment.

Any ideas?

4

2 回答 2

2

你必须使用android IPC机制,比如广播接收器

当应用程序 A 关闭时,它应该发送一个广播,并且应用程序 B 应该注册一个广播接收器以捕获来自应用程序 A 的广播

有关更多信息,请参阅文档http://developer.android.com/reference/android/content/BroadcastReceiver.html

于 2013-03-13T20:43:08.417 回答
1

如果这两个应用程序都是您自己编写的,您可以考虑BroadcastReceiver在应用程序 B 中添加一个,这会确保所有活动都关闭。在应用程序 A 关闭之前,调用该接收器并完成。

如果您不确定显示的是哪个活动,您可以使用 扩展 Activity 类BroadcastReceiver,以便所有活动都得到通知。

如果应用 B 不是您编写的,您可以使用killbackgroundProcesses(),例如

ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(myProcessId);

...但是,这仅在应用 B 实际上在后台时才有效。此外,这不是关闭应用程序的最佳选择,因为您不知道应用程序当前在做什么。

编辑:在该主题上找到了我最喜欢的示例 :-) 检查http://www.hrupin.com/2011/10/how-to-finish-all-activities-in-your-android-application-through-simple-call - 它显示了如何从应用程序内关闭所有活动。然而,从另一个人做这件事并不是一个很大的进步......

于 2013-03-13T20:46:44.023 回答