注意:我总是把这个设计放在脑海中,但从来没有到过具体的测试(尽管它确实有效),所以如果你最终尝试这个,告诉我它是怎么回事。 :)
我不认为有这么会给你此功能(我可能是错的)官方API方法,但你肯定可以构建自己的。这只是我的做法;当然可能会有更好的实现。
在您的应用程序中,您始终知道何时开始另一项活动。随着中说,你可以创建处理开始的所有应用程序的活动,并保持当你开始一个活动,代表一个布尔轨道全局类:
public class GlobalActivityManager {
private static boolean isActivityStarting = true;
public static boolean isActivityStarting() {
return isActivityStarting;
}
public static void setIsActivityStarting(boolean newValue) {
isActivityStarting = newValue;
}
public static void startActivity(Activity previous, Class activityClass) {
isActivityStarting = true;
// Do stuff to start your activity
isActivityStarting = false;
}
}
在每个活动的
然后(也许是为了这是一个超类),覆盖onPause()
方法来检查它是另一个应用程序的活动开始还是外部任务的应用程序出现在应用程序前面。这是有效的,因为当活动前有任何内容时,onPause被执行,这意味着当你在GlobalActivityManager
开始活动时会调用onPause,其中isActivityStarting
为真。
public void onPause() {
super.onPause();
if (GlobalActivityManager.isActivityStarting()) {
// It's one of your application's activities. Everything's normal.
} else {
// Some other task has come to the foreground. Do what needs to be done.
}
}
如果您能告诉我们检测的目的是什么,这可能会有帮助吗? – EboMike 2010-07-23 03:40:13
基于这两种情况,我的业务逻辑是不同的。后台活动在后台绑定到远程服务。如果用户实际上正在切换任务,我希望此背景活动解除绑定。否则,它需要保持绑定,以便将服务展示给我的应用中的其他活动。 – zer0stimulus 2010-07-23 13:23:32