322*_*896 2 android android-intent android-context android-activity
有时我需要提供一个Context对象来调用特定的函数,例如
Intent intent = new Intent(context, MyClass.class);
Run Code Online (Sandbox Code Playgroud)
为了开始服务
context.startService(intent);
Run Code Online (Sandbox Code Playgroud)
或者,提供Context对象来进行查询
Cursor cursor = context.managedQuery(uri, projection, null, null, null);
Run Code Online (Sandbox Code Playgroud)
如果这是在扩展Activity的UI类中完成的,那很好.但是,如果我想创建自己的实用程序类(单例),它不扩展任何东西并调用这些函数,我没有必要的Context对象.现在我的解决方法是在初始化实用程序类时传递一个活动引用,并具有调用这些函数的引用.我想知道这样做的正确方法是什么.让每个类扩展Context以使它可以调用这些函数是不合理的.
现在我的解决方法是在初始化实用程序类时传递一个活动引用,并具有调用这些函数的引用.我想知道这样做的正确方法是什么.
绝对不.您通过持有静态引用来泄漏该活动的内存.
让实用程序类中的方法Context
作为参数.或者,用于getApplicationContext()
获取单例应用程序上下文并将其提供给实用程序类构造函数.只要进程执行,应用程序上下文对象就会存在.
您也可以考虑将Application
单例扩展和初始化onCreate
为-Method作为常规对象.然后,您可以使用" Application
活动"中的-Object 访问getApplication
.Application
还提供对应用程序上下文的访问权限,因此您不必在活动中担心这一点.
这样,您的所有共享应用程序状态都集中在一个地方,而您不必使用静态初始化程序.
归档时间: |
|
查看次数: |
3743 次 |
最近记录: |