在startActivity上使用不同的上下文会使App重新启动

时间:2016-07-13 14:38:15

标签: android android-activity singleton android-context

我的应用程序以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

0 个答案:

没有答案