2014-10-22 4 views
3

я создал один вид деятельности, который создает профиль пользователя и сохраняет свою информацию, как имя, идентификатор, профиль ПИК и т.д.Создать общий объект для всего приложения

Эта информация является уникальной и должна быть использовать во всех видах деятельности в приложении.

Я хочу знать, какой лучший способ создать общий объект, который хранит всю информацию и использует ее во всех действиях.

Я прочитал о комплекте и JSON, но не могу понять, как его использовать.

Пожалуйста, помогите мне, какой вариант выбрать. Я много читал, но не уверен. Пожалуйста, помогите мне, что делать, и что будет лучше.

ответ

4

Вы можете использовать класс Application для доступа к одному и тому же объекту во многих видах деятельности.

public class TestApplication extends Application { 

    //Object declaration 

    public TestApplication() { 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
    } 

    //setter getter for object 
} 

Сейчас в вашей деятельности:

//after setContentView 
TestApplication testAppObj = (TestApplication) getApplication(); 
testAppObj.setSomeObj(myObj); 

//retrieve as: 
someObj = testAppObj.getterMethodOfObj(); 

Вы должны зарегистрировать класс приложений в вашем файл манифеста, как вы зарегистрировать свою деятельность:

<application 
     android:name="com.pkg.test.TestApplication " /> 

Надеется, что это помогает.

+0

Это связывает деятельность с реализацией приложения, я не думаю, что это хорошая практика. –

+0

@CarlosVerdes: Хотя обычно не требуется расширять «приложение» (особенно если программист не понимает последствий), жизненный цикл «приложения» начинается * ПЕРЕД * любым другим компонентом приложения и существует до тех пор, пока * ПОСЛЕ * все компоненты приложения прекращаются (если процесс приложения не будет принудительно завершен). Короче говоря, нет ничего плохого в расширении 'Application' и поддержании ссылок на глобальные объекты, хотя любой программист должен знать о последствиях. – Squonk

+0

Я хочу сказать, что это приложение привязано к этому приложению. –

-1

Способ Application является лучшим, но если вы хотите проверить, что here является официальным перечнем распространенных способов сделать это.

+0

Это связывает деятельность с реализацией приложения, я не думаю, что это хорошая практика. –

1

Вы можете создать свое собственное приложение (например, другие сказали), а затем у вас будет глобальный доступ к этой информации, но я думаю, что это не очень хороший дизайн, потому что ваши действия будут привязаны к этой реализации приложения (вы не будете способный использовать эту деятельность в другом приложении).

Предлагаю вам внедрить Сервис и использовать эту службу во всех действиях.

Проверьте следующую статью, чтобы создать фоновую службу, которая будет активна для всех видов деятельности: https://developer.android.com/training/run-background-service/create-service.html

+0

Я думаю, лучше использовать сервис. Вы можете добавить слишком много сервисов в свой путь к классам, но иметь только одно приложение. Но это просто мнение, я не сказал, что ваше решение не работает. –

0

Лучший способ осуществить это, чтобы сохранить данные в Prefrences и получить в случае необходимости. Чтобы упростить это, вы можете непосредственно сохранить объект в prefrences и получить этот объект по мере необходимости.

Для сохранения объекта вам потребуется библиотека GSON, которая будет добавлена ​​в вашу папку libs, и вы сможете конвертировать любой объект в строку и хранить в любом месте, где хотите.

Объект - >> Строка >>> Gson gson = new Gson(); Строка json = gson.toJson (Object);

Получение объекта назад

String - >> Объект >>> Gson gson = новый Gson(); Объект obj = gson.fromJson (json string);

Указанный выше метод вернется в постоянное хранилище, и вы не будете постоянно занимать память. Статические переменные могут быть освобождены системой по требованию памяти, поэтому не рекомендуется.

+0

Это лучше, чем прикладной подход, но нужно сериализовать из/в JSON. Это хорошо, если информация должна быть сохранена при выключении приложения. –

Смежные вопросы