这个是前后文对象,用this就可以了。如果需要其他Activity的前后文对象就用Bundle传过来。
报错:Context appContext = InstrumentationRegistry.getTargetContext(); 改为: Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
我们可以使用application context。application context伴随application的一生,与activity的生命周期无关。 application context可以通过Context.getApplicationContext或者Activity.getApplication方法获取。 避免context相关的内存泄露,记住以下几点: 1. 不要让生命周期长的对象引用activity context,即保证引用activity的对象要与activit...
在用Android studio进行单元测试时,getContext为null 最近闲来无事,领导有让做一些单元测试的工作,本来android studio中已经集成了单元测试的功能,本以为做起来很容易,结果还是悲剧了,在测试case中,getContext为空, 经过查找资料,用MockContext初始化就可以了。 参考资料:http://stackoverflow.com/questions/28960898/get...
网上有很多朋友在这里传入this.getApplicationContext(),这是不对的。 AlertDialog对象是依赖于一个View的,而View是和一个Activity对应的。 于是,这里涉及到一个生命周期的问题,this.getApplicationContext()取的是这个应 用程序的Context,Activity.this取的是这个Activity的Context,这两者的生命周期是不同 的,前者的...
最常见的方法就是getContext().getResource(),通过这个方法可以获取String,Drawable等资源。 还有自定义View的时候也常用到context.obtainStyledAttributes()这个方法。 由上面第三点getContext的不同可以知道如果在应用里通过obtainStyledAttributes获取资源,使用getContext()和getApplicationContext() 是不一样的。 例如应用...
先来回顾一下发生问题的代码。为了避免内存泄漏,在对外提供的 Jar 包里不假思索地用了如下代码: private DemoManager(Context context){ mContext = context.getApplicationContext(); if(DEBUG){ mContext.getPackageName(); ... } } 看似很平常的一个写法,在项目中应用该 Jar 包的时候 ,却发生了崩溃:mCon...
一般而言,如果context不需要ui相关的操作,就用getApplicationContext()。如果对象存活时间可能比activity长,考虑使用getApplicationContext()。其他情况,确保activity销毁前,取消引用activity,用this就好了。 参考链接 https://stackoverflow.com/questions/10641144/difference-between-getcontext-getapplicationcontext-getbasecont...
回到之前遗留的一个问题,为什么Dialog用Application作为context不行呢?Dialog的窗口类型属于应用窗口,如果采用Application作为context,那么通过context.getSystemService(Context.WINDOW_SERVICE)获取的WindowManagerImpl就不是Activity的WindowManagerImpl,而是Application,它同Activity的WindowManagerImpl的区别是没有parentWindow,...