使用 getApplicationContext() 作为上下文时,在 android 6 的 progressUpdate 上不显示 Toast

Toast not showing on progressUpdate in android 6 when using getApplicationContext() as context

我正在尝试在 ProgressUpdate() 方法上显示 Toast。在 Android 4,5 上运行良好,但在 android 6 上未显示 toast,并且没有抛出异常。

这是我的方法:

@Override
    protected void onProgressUpdate(String... values) { 
    super.onProgressUpdate(values);
    Toast.makeText(getApplicationContext(), values[0],     Toast.LENGTH_SHORT).show();
    }

如果我用 getBaseContext() 替换 getApplicationContext(),Toast 会按预期工作。

如果我使用 MainActivity.this 作为上下文

它不起作用

使用 getBaseContext() 是否正确? 为什么在 android 4,5 而不是 6 上使用 getApplicationContext()?

我不确定他们进行 Android 6.0 更新时发生了什么,但他们一定包装了一些上下文,或类似的东西。这是这两种方法之间的区别: Difference between getContext() , getApplicationContext() , getBaseContext() and "this"

Activity.getApplicationContext(): Returns the context for the entire application (the process all the Activities are running inside of). Use this instead of the current Activity context if you need a context tied to the lifecycle of the entire application, not just the current Activity.

ContextWrapper.getBaseContext(): If you need access to a Context from within another context, you use a ContextWrapper. The Context referred to from inside that ContextWrapper is accessed via getBaseContext().