Tag: android context

何时调用活动上下文或应用程序上下文?

有很多关于这两个环境是什么的post。但是我仍然没有把它说得很对 据我所知,到目前为止:每个是它的类的一个实例,这意味着一些程序员build议您尽可能经常使用this.getApplicationContext() ,以不“泄漏”任何内存。 这是因为另一个(获取Activity实例上下文)指向一个Activity ,每当用户倾斜手机或离开应用程序等被销毁。这显然是垃圾收集器(GC)不捕获,因此使用内存太多 但是,任何人都可以拿出一些非常好的编码示例,使用this (正在获取当前Activity实例的上下文)是正确的,而应用程序上下文将是无用/错误的?

Android上的“上下文”是什么?

在Android编程中, Context类是什么,它用于什么? 我在开发者网站上阅读了这篇文章,但是我无法清楚地理解它。

对话引发getApplication()作为上下文,“无法添加窗口 – 标记null不适用于应用程序”

我的活动正在尝试创建一个需要上下文作为参数的AlertDialog。 如果使用: AlertDialog.Builder builder = new AlertDialog.Builder(this); 然而,我不愿意使用“this”作为上下文,因为即使在像屏幕旋转这样简单的事情中,Activity被破坏并被重新创建时,由于内存泄漏的可能性。 从Android开发者博客上的相关文章 : 有两种简单的方法可以避免上下文相关的内存泄漏。 最明显的就是避免脱离自己范围之外的背景。 上面的例子显示了一个静态引用的情况,但是内部类和它们对外部类的隐式引用可能同样危险。 第二个解决方案是使用应用程序上下文。 只要您的应用程序处于活动状态,并且不依赖于活动的生命周期,此上下文就会生效。 如果您打算保留需要上下文的长寿命对象,请记住应用程序对象。 你可以通过调用Context.getApplicationContext()或者Activity.getApplication()来获得它。 但是对于AlertDialog() getApplicationContext()或getApplication()都不能作为Context使用,因为它引发异常: “无法添加窗口 – 标记null不适用于应用程序” 每个参考: 1,2,3等 那么,这是否真的被认为是一个“错误”,因为我们正式建议使用Activity.getApplication() ,但它不起到广告作用? 吉姆

getApplication()与getApplicationContext()

我无法找到一个令人满意的答案,所以在这里我们去: Activity/Service.getApplication()和Context.getApplicationContext()什么? 在我们的应用程序中,都返回相同的对象。 然而,在ActivityTestCase中,模拟应用程序将使getApplication()返回模拟,但getApplicationContext仍将返回不同的上下文实例(由Android注入)。 这是一个错误? 这是故意的吗? 我甚至不了解其中的差别。 在测试套件之外,是否有两个调用可能返回不同的对象? 何时,为什么? 而且,为什么getApplication在Activity和Service上定义,而不是在Context ? 不应该总是有从任何地方有效的应用程序实例吗?

在片段中使用上下文

我怎样才能得到一个片段的上下文? 我需要使用我的数据库的构造函数在上下文中,但getApplicationContext()和FragmentClass.this不工作,所以我能做什么? 数据库构造函数 public Database(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); }