Application本身就是一個(gè)Context
getApplication(),getApplicationContext()
getApplicationContext()得到的結(jié)果就是MyApplication本身的實(shí)例
getApplication()方法的語(yǔ)義性非常強(qiáng)柒昏,一看就知道是用來(lái)獲取Application實(shí)例的低飒,但是這個(gè)方法只有在Activity和Service中才能調(diào)用的到眼五。那么也許在絕大多數(shù)情況下我們都是在Activity或者Service中使用Application的案腺,但是如果在一些其它的場(chǎng)景日戈,比如BroadcastReceiver中也想獲得Application的實(shí)例另凌,這時(shí)就可以借助getApplicationContext()方法了谱轨。
如果真的想要提供一個(gè)獲取MyApplication實(shí)例的方法,比較標(biāo)準(zhǔn)的寫(xiě)法又是什么樣的呢吠谢?其實(shí)這里我們只需謹(jǐn)記一點(diǎn)土童,Application全局只有一個(gè),它本身就已經(jīng)是單例了工坊,無(wú)需再用單例模式去為它做多重實(shí)例保護(hù)了献汗,代碼如下所示:
public class MyApplication extends Application {
private static MyApplication app;
public static MyApplication getInstance() {
return app;
}
@Override
public void onCreate() {
super.onCreate();
app = this;
}
}