在android编程中使用“this”关键字作为context参数

时间:2016-12-09 09:01:09

标签: android this android-context

我已阅读What is context on android,但我仍然不清楚以下问题:
每当我在任何构造函数中遇到“ context ”参数时,我都会通过“ “关键字会自动而无需考虑。这总是正确的做法吗?

  1. 如果是:则表示“”关键字是“上下文”要求的唯一答案。那么这无用的问题是什么?
  2. 如果否:当构造函数要求“ context ”时,在哪些情况下以及可能传递的其他对象? 如果是的话,请原谅我的愚蠢问题。我是android编程的初学者,并试图理解基本概念。

3 个答案:

答案 0 :(得分:1)

  

这意味着“this”关键字是“上下文”的唯一答案   需求。那么这无用的问题是什么?

this指的是对象。它适用于您的情况,因为您继承自Activity Service ContextWrapper的继承自getActivity()

  

如果没有:在哪种情况下以及当a时可能传递的其他对象   构造函数要求“上下文”?

片段是一个示例 - 但它有方法select table_1.id, table_1.userid, table_2.flag from table_1 left outer join table_2 on table_1.userid=table_2.userid 来检索托管活动

答案 1 :(得分:0)

此关键字代表当前的类。

Context是android组件,你无法在JAVA核心中找到它。 这个关键字是JAVA的核心部分,它意味着'this和Context'是不同的东西。 实际上,如果您要扩展Context的任何子类,如Activity,AppCompactActivity或FragmentActivity等,您可以使用'this'关键字为Context分配,但不能在任何地方分配。

答案 2 :(得分:0)

假设您从Activity类或继承 Context 的某个Component传递 this 。 有一种情况您无需传递,而是必须通过getApplicationContext()

  • 如果项目中有Singleton类,并且想要将上下文传递给它。建议使用getApplicationContext()而不是this或activityContext。 因为,活动引用应该在内存中可用,直到其生命周期。在单例类中传递活动上下文可能会导致内存泄漏。