我有一个带有设置和身份验证活动的应用A.每当启动某个其他应用程序(比如应用程序B)时,就会启动身份验证活动,因此如果身份验证成功,则会显示应用程序B的启动器活动(一种应用程序锁定保护)。我有两个行为要解释,
当我的应用A最小化时,我将启动应用B.这将触发应用A的身份验证活动。如果身份验证成功,那么我立即查杀身份验证活动使用finish()。但这将完成身份验证活动,它将带来以前最小化的App A活动(我不希望这种情况发生),而不是将其带到新应用程序。
如果App A完全没有运行(甚至没有最小化),则启动身份验证活动,并且在成功验证后,将显示App B的活动。
有人可以解释为什么要显示这两种不同的行为。同样在案例1中,我也希望在成功验证后显示应用2的活动。
答案 0 :(得分:0)
我也在寻找像这样的东西。 但我确实找到了一些超出教学大纲的解决方案,例如使用后台服务或使用getTasks方法或使用包管理器等。
我所做的最简单的解决方案就是这样。
public class MainApplication extends Application implements Application.ActivityLifecycleCallbacks {
private static boolean background = false;
private static int count = 0;
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(this);
}
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
}
@Override
public void onActivityStarted(Activity activity) {
if(background){
background = false;
Log.v("activityFocus", "Activity came in foreground ");
Toast.makeText(getApplicationContext(), "Foreground", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onActivityResumed(Activity activity) {
count++;
}
@Override
public void onActivityPaused(Activity activity) {
count--;
}
@Override
public void onActivityStopped(Activity activity) {
if(count==0){
Log.v("activityFocus", "Activity is in background ");
Toast.makeText(getApplicationContext(), "Background", Toast.LENGTH_SHORT).show();
background=true;
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
}