使用 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().
我正在尝试在 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().