Совместное использование объектов между действиями в Android
Привет, у меня есть вопрос о передаче объекта по всему приложению. Скажем, я хочу иметь большой пользовательский объект в приложении. Этот объект будет использоваться несколькими видами деятельности и услугами. Сначала я сделал это.
Сначала я создал класс 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;
}
}
У меня вопрос, что с этим не так? Кажется, это работает нормально, но я обнаружил, что иногда значение этого одноэлементного объекта по какой-то причине устанавливается в нуль. Основная причина, по которой я делюсь этим объектом, а не делаю его разлагаемым, заключается в том, что это довольно дорого для меня, а то, что я сделал, выглядит очень легко. Есть ли обратная сторона?
После некоторых исследований я обнаружил, что есть еще один способ поделиться объектом по всему приложению.
Сначала определите в классе приложения
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 ()) отличается от использования одноэлементного объекта, как я делал в первом разделе? Это больше рекомендуется?
Заранее спасибо!