【发布时间】: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