2011-07-10 14 views
6

Zamierzam uczynić aplikację bardziej konkretną grą na telefon z Androidem.Singleton kontra Intents (Android)

Mam wiele zajęć i wiele zajęć, więc myślę o przechowywaniu danych gry.

Dane gry powinny być widoczne dla działań, więc myślę, że powinienem raczej użyć singleton do przechowywania danych tam i odbierać je łatwo z dowolnego działania lub powinienem raczej przekazać dane za pomocą Intents?

Będą małe kwoty i duże ilości danych (małe, takie jak wynik, duże, takie jak mapy itp.).

W przypadku partytur korzystałem z intencji, ale czy nie byłoby lepiej zrobić wszystko w taki sam sposób? A jeśli tak, to sądzę, że singleton z całym stanem gry byłby lepszy. Jakieś pomysły?

+1

Jeśli potrzebujesz tych samych danych widoczny dla wielu działań, użyj singletonu. Jeśli chcesz tylko powiadomić o następnej aktywności niektórych konkretnych danych, użyj dodatków w swoim zamiarze. Osobiście uważam, że lepiej jest użyć obu; nie wykluczają się wzajemnie. –

+1

Ponieważ jest to gra, kolejnym dobrym rozwiązaniem będzie ServiceLocator: http://gameprogrammingpatterns.com/service-locator.html – mibollma

Odpowiedz

1

Kiedy muszę dane, które są używane przez wielu działań właśnie stworzył klasę niestandardowych aplikacji, a następnie wykorzystywane że jako mój „Singleton” i to działa dobrze, ponieważ każda działalność może następnie uzyskać dostęp do kontekstu Custom Application

Aby Zrób to zacząć od stworzenia i rozszerzonego klasy Application

public class MyApplication extends Application { 
    // Details left blank 
} 

Dodaj do tego manifestu, więc wie, że aby używać zamiast domyślnej aplikacji

<application 
     ... 
     android:name=".MyApplication" 

Następnie dodać jakieś niestandardowe metody, które mają wszystkie swoje działania, aby mieć dostęp do i z każdym użyciu Aktywność coś

((MyApplication)this.getApplicationContext()).myMethod() 

Można również zobaczyć Application więcej szczegółów

+0

Co masz na myśli przez niestandardową aplikację. Po prostu normalna klasa wzoru singleton? Pytam także, która z nich jest lepsza pod względem dobrych praktyk i wykorzystania pamięci/procesora. – Taks

+0

@Taks można utworzyć niestandardową klasę aplikacji. Zmienię powyższą odpowiedź, stojąc przed – Idistic

+0

Zrób to samo tutaj. Działa świetnie. –

Powiązane problemy