该问题似乎与FLAG_ACTIVITY_MULTIPLE_TASK
无关。
在Android 4.3中,Activity
从非活动状态开始Activity
也处于非活动状态。 但是在Android 4.4中,Activity
从非活动状态开始Activity
将被带到前面。
所以我加了一堆代码来解决这个问题:
我一个isPaused
属性添加到BaseAcitity
,这是基类中我的应用程序的所有活动。
public class BaseActivity extends FragmentActivity {
public static final String START_FROM_PAUSED_ACTIVITY_FLAG = "START_FROM_PAUSED_ACTIVITY_FLAG";
protected boolean paused = false;
@Override
protected void onPause() {
super.onPause();
paused = true;
}
@Override
protected void onResume() {
super.onResume();
paused = true;
}
public boolean isPaused() {
return paused;
}
}
后来,当我开始启动SplashActivity
,我就把这isPaused
值到意向。
Intent intent = new Intent(activity, SplashActivity.class);
boolean isStartingFromBackgroundActivity = activity.isPaused();
intent.putExtra(BaseActivity.START_FROM_PAUSED_ACTIVITY_FLAG, isStartingFromBackgroundActivity);
startActivity(intent);
而且在onCreate
回调检查SplashAcitivity
isPaused得到价值,并推动SplashAcitivty
背景,如果该值为true。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (isStartedFromBackgroundActivity())
moveTaskToBack(true);
}
private boolean isStartedFromBackgroundActivity() {
return getIntent().getBooleanExtra(START_FROM_PAUSED_ACTIVITY_FLAG, false);
}