您好,我有一个关于在整个应用程序中传递对象的问题。
假设我想在整个应用程序中拥有一个大的自定义对象。
该对象将被多个活动和服务使用。
我一开始做的就是这样的。
首先,我创建了一个 Application 类并定义了一个单例对象。
public class FooApplication extends Application {
public static SharedObj obj;
...
}
其次,在活动中我设置了该对象的值
public class FooActivity extends Activity {
OnCreate() {
FooApplication.obj = SharedObj.getInstance();
}
}
第三,在另一个活动中我访问这个对象
public class BarActivity extends Activity {
OnCreate() {
SharedObj useThis = FooApplication.obj;
}
}
我的问题是,这有什么问题吗?
它似乎工作正常,但我发现有时这个单例对象的值由于某种原因被设置为 null。
我像这样共享这个对象而不是使其可分割的主要原因是,这样做对我来说有点昂贵,而且我所做的看起来很容易做到。有缺点吗?
经过一番研究,我发现还有另一种方法可以在整个应用程序中共享对象。
首先,在app类中定义
public class FooApplication extends Application {
public SharedObj obj = new SharedObj();
...
}
其次,在这样的活动中初始化
public class FooActivity extends Activity {
OnCreate() {
FooApplication fooApp = (FooApplication)getApplicationContext();
fooApp.obj = new SharedObj();
}
}
第三,在另一个活动中我访问这个对象
public class BarActivity extends Activity {
OnCreate() {
SharedObj useThis = ((FooApplication)getApplicationContext()).obj;
}
}
此方法(使用 getapplicationContext())与我在第一部分中使用的单例对象有何不同?这个更推荐吗?
提前致谢!