作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作我的第一个 android 库作为练习。这是 Google Cloud Messaging
假设这段代码在 Android 应用程序的任何地方被调用:
GCMLib.initialize(this);
此方法接受上下文作为参数。稍后,库在 BroadcastReceiver
中收到一个新的 Push
(在 Manifest 中引入),我正在尝试在那里创建一个 Notification
,并检索目标使用该 Context
的应用程序图标和 AppName 字符串。
到目前为止,我在静态帮助程序类中持有对 Context
对象的引用:
public final class HelperClass {
private static Context appContext;
public static Context getAppContext() {
return appContext;
}
public static void setAppContext(Context appContext) {
HelperClass.appContext = appContext;
}
}
Android 库项目的标准模式是什么?
最佳答案
如果Context不需要画UI之类的,也就是application context就够了,可以这样:
public class MyApplication extends Application
{
private MyApplication instance;
@Override
public void onCreate() {
super.onCreate();
this.instance = this;
}
public MyApplication getApplication() {
return instance;
}
}
现在您可以为有效的上下文调用 MyApplication.getApplication()
。这不会导致泄漏,因为 Application 是单例(只有一个 Application 实例存在)。
要使用自定义应用程序对象,您需要更新 list ,请参阅此链接的示例:http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/
关于android - 如何在 Android 库中保存对上下文对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24186597/
我是一名优秀的程序员,十分优秀!