我正在尝试在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上使用getApplicationContext()而不是6?
答案 0 :(得分:0)
我不确定他们制作Android 6.0更新时发生了什么,但是他们必须包含一些上下文,或类似的东西。以下是这两种方法的区别: Difference between getContext() , getApplicationContext() , getBaseContext() and "this"
Activity.getApplicationContext():返回整个上下文 应用程序(所有活动都在其中运行的过程)。 如果需要上下文,请使用此代替当前的Activity上下文 与整个应用程序的生命周期相关联,而不仅仅是当前的应用程序 活性。
ContextWrapper.getBaseContext():如果需要访问Context 在另一个上下文中,您使用ContextWrapper。上下文提到 从内部通过getBaseContext()访问ContextWrapper。