getApplicationContext () возвращает ноль, когда экземпляр приложения воссоздается - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь запустить действие с использованием контекста приложения, например,

Это работает

public class MyApplication extends Application {

    public static Context mContext = null;

    public MyApplication() {
        mContext = this;
    }
    public static void launchActivity() {
        Log.i(TAG, "Going to start main activity");
        Intent intent = new Intent();
        intent.setComponent(new ComponentName(mContext.getPackageName(), MainActivity.class.getName()));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        mContext.startActivity(intent);
        Log.i(TAG, "Successfully started the activity");
    }
}

Это не работает

public class MyApplication extends Application {

    public MyApplication() {
        //Do nothing
    }
    public void launchActivity() {
        Log.i(TAG, "Going to start main activity");
        Intent intent = new Intent();
        intent.setComponent(new ComponentName(getApplicationContext().getPackageName(), MainActivity.class.getName()));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        getApplicationContext().startActivity(intent);
        Log.i(TAG, "Successfully started the activity");
    }
}

Я вызываю этот метод launchActivity из своего широковещательного приемника, который выглядит примерно так:

public class MyReceiver extends BroadcastReceiver {

    public static final String TAG = "xyz";

    @Override
    public void onReceive(Context context, Intent intent) {
        MyApplication myApplication = new MyApplication();
        myApplication.upateUIModeValueViaBroadcast();
    }
}

Я не понимаю, почему getApplicationContext () возвращаетme null , когда экземпляр приложения новый.

1 Ответ

0 голосов
/ 01 ноября 2019

изменить это

public static Context mContext = null;

на

public Context mContext;
...