报错:Context appContext = InstrumentationRegistry.getTargetContext(); 改为: Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
getApplicationContext() 生命周期是整个应用,应用摧毁它才摧毁 Activity.this的context属于activity ,activity 摧毁他就摧毁 activity.this要返回一个activity,而getApplicationContext()就不一定返回一个activity getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁 Activity.this的context 返回当前...
一、Context相关类的继承关系 我们有3种方式可以获得context: mContext = getApplicationContext(); 这种方式获得的context是全局context,整个项目的生命中期中是唯一的且一直存在的,代表了所有activities的context mContext = getContext() 这种方式获得的context当activity销毁时,context也会跟着销毁了 mContext = getBas...
一、在有Activity和Service的情况下 getContext().getContentResolver().insert(...); 1.getContext()是获得一个上下文对象(Context),一般在四大组件中都会获取上下文对象。 2.在Activity和Service中,就没必要获取Context了,因为他本身就是,所以可以直接调用getContentResolver()。 3.在ContentProvider中,就需要先调用...
AlertDialog.Builderbuilder=newBuilder(Activity.this);//可以AlertDialog.Builderbuilder=newBuilder(getApplicationContext());//内存泄漏 如果把this换成getApplicationContext(),不会报错,但是就如我们刚才所说,getApplicationContext()返回的上下文会随着应用一直存在,这里如果Activity关闭了我们就无法销毁这个界面的上下文,...
对于Application的Context而言,在整个应用的生命周期内都不会改变;而对于不同的Activity,其Context有可能不同,例如添加一个Dialog必须附着在Activity上,所以使用Application就会报错。 总结 除了Application,DecorView和getApplicationContext方法会取到Application Context外,其他方法getContext都会取到Activity Context或者传入的Con...
@OverridepublicViewHolderonCreateViewHolder(ViewGroupparent,intviewType){Viewview=LayoutInflater.from(parent.getContext()).inflate(R.layout.item_1,parent,false);returnnewViewHolder(view);} 具体原因:inflater在inflate一个布局文件时,需要知道parent的类型,才能生成对应的LayoutParams,才可以把布局文件...
startService(intent);getContext().sendBroadcast(intent);Context作用域 虽然Context神通广大,但并不是随便拿到一个Context实例就可以为所欲为,它的使用还是有一些规则限制的。由于Context的具体实例是由ContextImpl类去实现的,因此在绝大多数场景下,Activity、Service和Application这三种类型的Context都是可以通用的。不...
MyApplication.getContext() 注意:最好是在不得已的情况下使用上述方法来获取context,而不是只要用到context就使用MyApplication.getContext(),因为这涉及到View等存在生命周期的问题。如toast要用到的context就要使用Activvity.this,否则可能报错。(题外话:如果这么容易被代替,google又不是傻子,早就淘汰了) ...