背景:之前我們學習了網絡編程,然後把代碼封裝到一個類裏面,如果想要在那個類裏面獲取context用於Toast提示,是比較困難的事情。我們需要修改HttpUtil的函數的參數,在調用函數的時候把context傳進去。雖然是一個可行的方案,但是這個把責任轉移到了調用方,首先調用方能不能獲取context是一個問題,其次這也讓這個函數變得複雜。所以我們需要想辦法讓HttpUtil可以通過全局的函數來獲取context。
第一步:定義MyApplication類,繼承Application,並重寫onCreate方法、增加getContext靜態方法:
// NetworkTest - MyApplication.java
public class MyApplication extends Application{
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
}
public static Context getContext() {
return mContext;
}
}
第二步:設計好了自己的Application類,還要讓整個工程應用它,需要修改AndroidManifest.xml
<application
android:name="com.example.networktest.MyApplication"
......
注意包名必須寫全,否則系統會找不到這個類。
第三步:大功告成,在需要的地方調用MyApplication.getContext()就可以了。