Я пытаюсь запустить действие с использованием контекста приложения, например,
Это работает
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 , когда экземпляр приложения новый.