【问题标题】:How to initialize an Application class and store getApplicationContext() in android?如何在android中初始化一个Application类并存储getApplicationContext()?
【发布时间】:2015-10-12 09:20:24
【问题描述】:

我已经在我的应用程序中声明了一个应用程序类:

public class application extends Application {

    String TAG="joshtag";//app.TAG;

    @Override
    public void onCreate() {
        super.onCreate();
        Log.e(TAG, "Initializing APP");
        initializeSingletons(getApplicationContext());
    }

    protected void initializeSingletons(Context c){
        Log.e(TAG, "...preparing to Initialize Singleton");
        app.initInstance(c);
    }
}

正如你想象的那样,我希望这个类在我的应用程序启动后立即运行,目的是初始化一个 Singleton 类(这个 Singleton 类不扩展任何其他类,并且将包含一个用于存储 getAppContext 的变量)。 但是,日志消息永远不会在“onCreate”和“initializeSingleton”内部触发,并且 Singleton 没有被初始化。 我的最终目标是存储一个全局 getAppContext 变量,我可以在不继承它的类中使用它。 如果我以错误的心态处理问题,请告诉我并说明原因。

【问题讨论】:

  • 您是否在AndroidManifest.xml 中添加了对您的应用程序类的引用? <application ... android:name="com.yourPackageName.application ">
  • 即使不使用单例,您也将始终获得 getApplicationContext() 的价值。有什么问题?
  • 在没有扩展其他类的类中,调用 getApplicationContext() 是不可能的,出现一个未解决的方法.... @PankajKumar
  • 无论如何你的类都会被任何andorid组件调用。所以从那里传递上下文对象,并为这些类创建参数化构造函数,这样你就可以将上下文对象放入其中。
  • 考虑:stackoverflow.com/questions/4916209/… 并且为了好玩,还可以看看这个关于从 Dianne Hackborn(Android 框架开发人员)继承 Application 类的评论:plus.google.com/u/0/+AnderWebbs/posts/DsfpW51Vvow

标签: java android singleton android-context


【解决方案1】:

不要忘记在AndroidManifest.xml 中添加对您的应用程序类的引用。

<application ... android:name="com.yourPackageName.application ">

【讨论】:

  • 很好,我的 Application 和 Singleton 类已正确实现,但直到我将该行放在清单上后它们才起作用。
【解决方案2】:

面临同样的问题。要初始化一个应用程序类,我们需要在清单文件中指定它,并在应用程序标签内使用相应的包名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-02
    • 2017-05-11
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多