2016-10-08 3 views
0

Я работаю над проектом, например Facebook, и я использую базу данных Firebase, и есть объект для пользователя (пользователя, который вошел в систему) и в этом объекте имеет атрибут например, имя профиля электронной почты и т. д.Android, как получить доступ к одному и тому же объекту с помощью различных видов деятельности

Мой вопрос: я знаю, что я могу загружать каждую информацию из базы данных всякий раз, когда пользователь перебирает различные действия (например, временную шкалу профиля сообщений), но чтобы сэкономить некоторое время, я хочу, чтобы данные загружались на MainActivity и поместите данные в один объект (например, user.setProfile), и я хочу, чтобы к этому объекту обращались с каждого Activity ??? Это возможно? (Простой пример будет очень оценен)

ответ

0

Одним из возможных решений будет использование вашего класса приложений.

class FbprojectApplication extends Application{ 
    static UserObject user; 

    public static void setUserObject(UserObject user){ 
     this.user=user; 
    } 

    public static UserObject getUserObject(){ 
     return user; 
    } 

} 

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

Теперь от вашей деятельности,

public class MainActivity extends Activity{ 

//initialize userobject whenever you need to. 
    void initializeUser(UserObject user){ 
    FbprojectApplication.setUserObject(user); 
} 
} 

Точно так же это переменный будет доступен из любого класса.

public class OtherActivity extends Activity{ 

//get userobject whenever you need to. 
    FbprojectApplication.getUserObject(); 
} 

Как userobject статично в классе приложения вы можете повторно инициализировать его, не заботясь о несоответствии через различные виды деятельности.

+0

Спасибо за ясный ответ – user6798995

+0

Не забудьте добавить свой класс приложения в файл манифеста. –

+0

Я не буду благодарен !! – user6798995

1

Вам следует попробовать шаблон дизайна Singleton и не забывайте о проблеме с потоковой безопасностью.

Ссылка: Singleton pattern

+0

Я знаю, что одноэлементный шаблон работает в Java, ему нужно создать конструктор, но как насчет действий ... ?? Как вы можете заставить его работать там? – user6798995

+0

Создайте одноэлементный класс и просто используйте его экземпляр в классе Activity. Все, что вам нужно сделать, это предоставить необходимые интерфейсы. Например, 'private T userProfile',' public T getUserProfile() ',' public void setUserProfile (T) '. – jules3c

0

хороший способ справиться с таким родом зависимость через ваше приложение, чтобы использовать рамки инъекции зависимостей, такие как кинжал http://square.github.io/dagger/

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

0

Я хотел бы предложить иметь объект static, объявленный в запуске Activity. Затем вы можете получить значения из всех остальных Activity после того, как они заполнены значениями, полученными из Firebase.

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