通过应用程序从服务访问全局对象
Accessing Global Objects from Service via Application
问题描述
我正在编写基于 Android Service
的应用程序。在一些对象(例如导航器)的应用程序中,我在 Application
class 中初始化,因此我可以从任何地方访问 then,它们是一种单例。
CustomApplication.java
public class CustomApplication extends android.app.Application {
private Navigator navigator;
public Navigator getNavigator() {
return this.navigator;
}
@Override
public void onCreate() {
this.navigator = new Navigator();
}
}
CustomService.java
public class CustomService extends Service {
private Navigator navigator;
@Override
public void onCreate() {
this.navigator = ((CustomApplication)getApplication()).getNavigator();
}
}
问题
我有些怀疑调用
this.navigator = ((CustomApplication)getApplication()).getNavigator();
来自服务 onCreate()
并且通常来自任何方法都是不正确的,在应用程序被杀死且服务为 运行 的情况下,它可能会导致一些问题(例如。 nullpointer),我这样做是对的还是安全的,不会引起任何问题?
as in cases when application in killed
"application" 不是 "killed"。进程终止。如果您的代码是 运行,您的进程不会终止。 getApplication()
将在您的进程为 运行 时起作用。
也就是说,与标准 Java 单例相比,在这里使用自定义 Application
没有任何价值。
问题描述
我正在编写基于 Android Service
的应用程序。在一些对象(例如导航器)的应用程序中,我在 Application
class 中初始化,因此我可以从任何地方访问 then,它们是一种单例。
CustomApplication.java
public class CustomApplication extends android.app.Application {
private Navigator navigator;
public Navigator getNavigator() {
return this.navigator;
}
@Override
public void onCreate() {
this.navigator = new Navigator();
}
}
CustomService.java
public class CustomService extends Service {
private Navigator navigator;
@Override
public void onCreate() {
this.navigator = ((CustomApplication)getApplication()).getNavigator();
}
}
问题
我有些怀疑调用
this.navigator = ((CustomApplication)getApplication()).getNavigator();
来自服务 onCreate()
并且通常来自任何方法都是不正确的,在应用程序被杀死且服务为 运行 的情况下,它可能会导致一些问题(例如。 nullpointer),我这样做是对的还是安全的,不会引起任何问题?
as in cases when application in killed
"application" 不是 "killed"。进程终止。如果您的代码是 运行,您的进程不会终止。 getApplication()
将在您的进程为 运行 时起作用。
也就是说,与标准 Java 单例相比,在这里使用自定义 Application
没有任何价值。