當開發一個應用程序時,當我需要在不擴展Activity的類內執行一些操作(需要上下文爲Activity類型)時,我遇到了很多次。創建一個擴展活動的utillity類
例如:創建AlarmManager事件,創建廣播或操作系統服務。
創建一個靜態活動作爲一個utillity類來執行動作是一個好主意嗎?
好處是它可以從整個應用程序類訪問。
Otherwiswe我發現我的自我複製代碼從一個活動到另一個。
當開發一個應用程序時,當我需要在不擴展Activity的類內執行一些操作(需要上下文爲Activity類型)時,我遇到了很多次。創建一個擴展活動的utillity類
例如:創建AlarmManager事件,創建廣播或操作系統服務。
創建一個靜態活動作爲一個utillity類來執行動作是一個好主意嗎?
好處是它可以從整個應用程序類訪問。
Otherwiswe我發現我的自我複製代碼從一個活動到另一個。
確保這些呼叫需要Activity
而不是Context
。我相信你提到的案例只需要一個Context
,這在活動之外很容易獲得。例如,Android Service
源自Context,正如Application
對象本身一樣。
public class MyApplication extends Application {
public static MyApplication instance = new MyApplication();
private static Context context;
@Override
public Context getApplicationContext() {
// TODO Auto-generated method stub
return super.getApplicationContext();
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
context = this;
}
public static Context getContext() {
return context;
}
}
你可以通過簡單MyApplication.getContext();
稱這並添加以下代碼到你的AndroidManifest.xml初始化這個類時,你的應用程序開始。
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:name="com.example.application.MyApplication"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
將此作爲建設性的批評者:您應該爲您的答案添加一些解釋。 – ramaral
覆蓋getApplicationContext和什麼都不做的點是什麼?什麼是靜態實例沒有使用?您還需要展示如何在AndroidManifest.xml中引用此文檔 –
對不起guyz,您需要調用MyApplication.getContext()以獲取應用程序中的上下文,這是一個小錯誤。 –
創建工具類總是一個好主意。你爲什麼困惑? – Batty
如果您的實用程序類需要上下文將其傳遞給構造函數。 – ramaral