2016-12-09 20 views
-2

我讀過What is context on android但仍以下問題不明確對我說:
每當我遇到「背景」參數中的任何構造函數,我通過「「關鍵字自動和沒有思考。這總是正確的做法嗎?使用「this」關鍵字在Android的編程環境參數

  1. 如果是:這意味着「這個」關鍵字是唯一的答案「背景」的要求。那麼這無用的問題是什麼?
  2. 如果否:在構造函數要求「上下文」時可能傳遞哪些情況和其他對象?
    對不起,我的愚蠢問題,如果是這樣。我是Android編程的初學者,並試圖理解基本概念。
+0

如果Fragments中需要上下文,請使用'getContext()',如果您的類正在擴展任何Activity,那麼您可以傳遞'this'。 –

+0

http://stackoverflow.com/questions/2914525/passing-activity-context-to-constructors-to-use-internally-is-this-bad –

+0

@abbath我讀過[link](http:// stackoverflow .com/questions/3572463/what-is-context-on-android),但我沒有找到我的答案。我想現在,如果我可以**總是**或**有時**使用**這個**關鍵字? –

回答

1

則表示「this」關鍵字是唯一的答案「上下文」 要求。那麼這無用的問題是什麼?

this對象。它可以在你的情況,因爲從ServiceContextWrapper

繼承如果沒有Activity你的子類:其中,當 構造詢問「上下文」的情況下,什麼其他的目的,也許傳遞?

片段是一個例子 - 但它具有方法getActivity()來檢索主機活動

0

NO

這個關鍵字代表當前類。

上下文是android組件,你不能在JAVA內核中找到它。 這個關鍵字是JAVA的核心部分,它意味着'this和context'是不同的東西。 實際上,如果您要擴展Context的任何子類(如Activity,AppCompactActivity或FragmentActivity等),則可以使用「this」關鍵字來分配上下文但不是遍地。

+0

它代表當前類的當前實例! –

+0

對,'this'代表當前的類實例。 如果您正在擴展Context或Context的任何子類,則可以使用該類內的「this」關鍵字將其指定給Context。 –

+0

爲什麼android要求上下文?它不知道方法在哪個上下文中運行? –

0

假設,您從活動類或某個繼承上下文的組件傳遞。 有一種情況下,您不必通過這個而不是它,你必須通過getApplicationContext()

  • 如果你在你的項目中一個單獨的類,你想傳遞上下文給它。建議使用getApplicationContext()而不是this或activityContext。 因爲活動引用應在內存中可用直到其生命週期。在單例類中傳遞活動上下文可能導致內存泄漏。
相關問題