我的应用程序以splashActivity开头。 在我的应用程序中,我启动了所有的Singleton类,其中一个是ActivityController(简化代码):
public class ActivityController {
private static ActivityController INSTANCE = null;
private final String TAG = "ACTIVITY MANAGER";
static Context context;
private ActivityController() {
Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
private synchronized static void createInstance(Context c) {
if (INSTANCE == null) {
context = c.getApplicationContext();
INSTANCE = new ActivityController();
}
}
public static ActivityController getInstance(Context c) {
if (INSTANCE == null) createInstance(c);
return INSTANCE;
}
这是我的Application类:
public class Global extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
ActivityController.getInstance(this);
JodaTimeAndroid.init(this);
//etc...
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
MultiDex.install(this);
}
}
如果我运行此代码,它会启动MainActivity,但是当我关闭应用程序(滑动手指)时,它会在几秒后重新启动。总是。关闭它是不可能的。
我发现没有此问题的唯一方法是启动SplashActivity ActivityController.getInstance(this)
中的OnCreate
,这是启动器活动。这样我可以关闭应用程序,它不会重新启动。
为什么会这样?我认为这与“背景”有关。
我没有任何提示就读过这篇文章:Activity restarts on Force Close