Context與ApplicationContext的區別

來源:互聯網
上載者:User

標籤:相關   content   adc   定義   預設   com   為什麼   不能   系統   

  • ApplicationContext並沒有這個類,其實更應該叫做:Activity與Application在作為Context時的區別。嗯,的確是這樣的,大家在需要Context的時候,如果是在Activity中,大多直接傳個this,當在匿名內部類的時候,因為this不能用,需要寫XXXActivity.this,很多哥們會偷懶,直接就來個getApplicationContext。那麼大家有沒有想過,XXXActivity.this和getApplicationContext的區別呢?
    XXXActivity.this和getApplicationContext返回的肯定不是一個對象,一個是當前Activity的執行個體,一個是項目的Application的執行個體。既然區別這麼明顯,那麼各自的使用情境肯定不同,亂使用可能會帶來一些問題。
  • 按照下表進行使用:

    注意看到有一些NO上添加了一些數字,其實這些從能力上來說是YES,但是為什麼說是NO呢?下面一個一個解釋:
    數字1:啟動Activity在這些類中是可以的,但是需要建立一個新的task。一般情況不推薦。
    數字2:在這些類中去layout inflate是合法的,但是會使用系統預設的主題樣式,如果你自訂了某些樣式可能不會被使用。
    數字3:在receiver為null時允許,在4.2或以上的版本中,用於擷取黏性廣播的當前值。(可以無視)
    註:ContentProvider、BroadcastReceiver之所以在上述表格中,是因為在其內部方法中都有一個context用於使用。

  • 看下錶格,重點看Activity和Application,可以看到,和UI相關的方法基本都不建議或者不可使用Application,並且,前三個操作基本不可能在Application中出現。實際上,只要把握住一點,凡是跟UI相關的,都應該使用Activity做為Context來處理;其他的一些操作,Service,Activity,Application等執行個體都可以,當然了,注意Context引用的持有,防止記憶體流失。

Context與ApplicationContext的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.