2014-01-12 31 views
0

當開發一個應用程序時,當我需要在不擴展Activity的類內執行一些操作(需要上下文爲Activity類型)時,我遇到了很多次。創建一個擴展活動的utillity類

例如:創建AlarmManager事件,創建廣播或操作系統服務。

創建一個靜態活動作爲一個utillity類來執行動作是一個好主意嗎?

好處是它可以從整個應用程序類訪問。

Otherwiswe我發現我的自我複製代碼從一個活動到另一個。

+0

創建工具類總是一個好主意。你爲什麼困惑? – Batty

+1

如果您的實用程序類需要上下文將其傳遞給構造函數。 – ramaral

回答

1

確保這些呼叫需要Activity而不是Context。我相信你提到的案例只需要一個Context,這在活動之外很容易獲得。例如,Android Service源自Context,正如Application對象本身一樣。

2
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" > 
+0

將此作爲建設性的批評者:您應該爲您的答案添加一些解釋。 – ramaral

+0

覆蓋getApplicationContext和什麼都不做的點是什麼?什麼是靜態實例沒有使用?您還需要展示如何在AndroidManifest.xml中引用此文檔 –

+0

對不起guyz,您需要調用MyApplication.getContext()以獲取應用程序中的上下文,這是一個小錯誤。 –