android - 如何在 Android 库中保存对上下文对象的引用

标签 android android-library android-context

我正在尝试制作我的第一个 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/

相关文章:

android - iOS,以非故事模式启动邮件客户端。如何?

传递多个参数的Android绑定(bind)适配器导致错误

android - 将库项目作为依赖项添加到另一个库项目

AsyncTask 中的 Android 上下文泄漏

java - Android Activity 上下文 NullPointerException

android - TextView 下方可绘制的线条未显示

android库应该自动启动

android - 将 androidx.room 打包到 aar 库中的项目导致 java.lang.NoClassDefFoundError : Failed resolution of: Landroidx/room/RoomDatabase

android - CustomListViewAdapter 中未调用 getView()

java - OnPostExecute 未获取字符串