為方便起見,Roboguice針對Android平台常用的一些對象或服務提供了“標準 注入”支援。比如無需使用(SensorManager) getSystemService (SENSOR_SERVICE) 來取得SensorManger 執行個體,而直接使用@Inject 標記
@Inject SensorManager sensorManager;
Roboguice 自動為 sensorManager 注入所需SensorManger 對象, Roboguice支援的標準注入有如下 :
@Inject ContentResolver contentResolver;
@Inject AssetManager assetManager;
@Inject Resources resources;
@Inject LocationManager locationManager;
@Inject WindowManager windowManager;
@Inject LayoutInflater layoutInflater;
@Inject ActivityManager activityManager;
@Inject PowerManager powerManager;
@Inject AlarmManager alarmManager;
@Inject NotificationManager notificationManager;
@Inject KeyguardManager keyguardManager;
@Inject SearchManager searchManager;
@Inject Vibrator vibrator;
@Inject ConnectivityManager connectivityManager;
@Inject WifiManager wifiManager;
@Inject InputMethodManager inputMethodManager;
@Inject SensorManager sensorManager;
我們使用SensorManager 為例,說明一下Standard Injection的用法,本例基 於Android ApiDemos樣本解析(90):OS->Sensors (http://www.imobilebbs.com/wordpress/?p=1690)。
修改
private SensorManager mSensorManager;
為
private @Inject
SensorManager mSensorManager;
去掉 onCreate 中的
mSensorManager = (SensorManager) getSystemService (SENSOR_SERVICE);
運行執行個體,可以看出不用使用getSystemService, Roboguice自動為mSensorManager 賦了值。
本例下載: http://www.imobilebbs.com/download/android/roboguice/StandardInjectionD emo.zip
查看全套文章:http://www.bianceng.cn/OS/extra/201301/34950.htm