使用 MultiDexApplication 会导致 applicationContext 变为 null

Using MultiDexApplication causes applicationContext to become null

我已按照 link - https://developer.android.com/studio/build/multidex.html.

中的说明将我的应用程序切换为 MultiDexApplication

应用程序现在安装正确,但我的应用程序上下文为空。大家以前有过这样的经历吗?

如果您需要代码示例,请告诉我,但由于应用程序因无法获取应用程序上下文而崩溃,我想不出任何可以解释该问题的代码。

获取我的应用程序上下文如下:

TrackerApplication.getContext();


public class TrackerApplication extends MultiDexApplication {

private static Context context;

public TrackerApplication() {
    super();
    context = this;
}

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

@Override
public void onCreate() {
    super.onCreate();
    Fabric.with(this, new Crashlytics());
}

public static Context getContext() {
    return context;
}
}

然后当我打电话时:

TrackerApplication.getContext().getSharedPreferences("MySettings",
            Context.MODE_PRIVATE);

我得到一个 NullPointer。我的应用上下文为空。

添加了一个测试来解释这个问题。在我的 Launch activity 中,我添加了这段代码:

if (TrackerApplication.getContext() == null) {
        Log.i("TEST", "Context is null");
    } else {
        Log.i("TEST", "What is the issue?");
    }

LogCat 总是打印出 Context is null.

通过执行以下操作最终解决了这个问题: 1- 从应用程序中完全删除 multidex 代码。 2-清理项目。 3- 建成项目。 4- 再次将所有 multidex 代码添加到项目中。 5-再次清理并重建项目。 6- 之后才开始工作..

不知道为什么第一次不行,现在好了。