2011-12-19 38 views
4

類似的帖子,沒有我正在尋找的答案。如何正確管理Android應用程序的上下文(非活動類)

Using Application context everywhere?

http://developer.android.com/reference/android/app/Application.html

Static way to get 'Context' on Android?

What's the difference between the various methods to get a Context?

問題描述:

我有一組實用工具類,其中一些w的儀式文件。其他人可能會使用數據庫等。關鍵是我的不只一個實用程序需要上下文 s。一個簡單的例子是通過context.getString(r.strings.id)從strings.xml中讀取。

我認爲在大多數情況下我想避免單身人士。除非絕對必要,否則我會與單身人士一起去。這已經解決併發布在其中一個鏈接上。我個人認爲他們是一種模式。只是個人選擇。我明白你的應用程序上下文根據定義是一個單例對象。每個應用程序上下文只有一個應用程序。如果是唯一的方法,我願意接受上述選項。

問:

我的工具類怎樣才能查看在我的應用程序上下文,這樣我可以簡單地做新MyContext()。此上下文需要具有對應用程序資源的引用。我認爲這被稱爲applicationContext()從一個活動調用時。理想情況下,這將是一個便宜的操作。

謝謝。

編輯:(澄清) 我正在編寫一個應用程序將自己綁定到的服務。我認爲這不應該影響答案。再次感謝。

+0

不錯的第一個問題。好的解釋,加上顯示你已經知道。但是如果你不想使用ApplicationContext(),你在尋找什麼? – Entreco 2011-12-19 23:39:35

+1

@Entreco:我當時希望能有一種優雅的方式來做同樣的事情。我確實想獲得ApplicationContext,並且我認爲在這種情況下接受一個單例是有意義的。 我其實下載了Froyo的整個android源代碼,看着谷歌正在處理這個問題的方式。事實證明,對於我所看到的所有類,上下文作爲參數傳遞,或者作爲arg。到Ctor或arg。到功能。 更具體地說,如果你看看froyo的發佈版本,在這個路徑下packages/apps/Contacts/src/com/android/contacts/util/* – agallego 2011-12-20 15:52:29

回答

0

我會認爲最安全的方法是將上下文實例傳遞給每個需要訪問resrouces的函數等。這似乎是API使用的常見做法。我實際上很困惑,爲什麼這麼多的函數似乎需要一個上下文實例,直到出現。

+0

這似乎是很多預訂待辦事項。我會等待其他答案。現在,所有需要上下文的函數/對象都會在構造函數或函數本身上添加一個參數。 – agallego 2011-12-19 18:22:13

相關問題