編輯:Android開發教程
在開發應用時一個基本原則是模塊化,並且近最大可能性地降低模塊之間的耦 合性。在Java平台上Spring Framework 以及.Net 平台CAB ,SCSF 和Prism (WPF,Silverlight)中都有對Dependency injection 的支持。
Dependency injection 大大降低了類之間的依賴性,可以通過annotation (Java)或是 SeviceDepdendcy (.Net) 描述類之間的依賴性,避免了直接調用類似的構造函數 或是使用Factory來參加所需的類,從而降低類或模塊之間的耦合性,以提高代碼 重用並增強代碼的可維護性。
Google Guice提供了Java平台上一個輕量級 的 Dependency injection 框架,並可以支持開發Android應用。本指南將使用 Android平台來說明Google Guice的用法。
簡單的來說:Guice 降低了 Java代碼中使用 new 和 Factory函數的調用。可以把Guice 的@Inject 看作 new 的一個替代品。使用Guice可能還需要寫一些Factory方法,但你的代碼不會依賴 這些Factory方法來創建實例。 使用Guice 修改代碼,單元測試已經代碼重用變 得更容易。
RoboGuice 為Android平台上基於Google Guice開發的一個庫 ,可以大大簡化Android應用開發的代碼和一些繁瑣重復的代碼。比如代碼中可能 需要大量使用findViewById在XML中查找一個View,並將其強制轉換到所需類型, onCreate 中可能有大量的類似代碼。RoboGuice 允許使用annotation 的方式來 描述id於View之間的關系,其余的工作由roboGuice庫來完成。比如:
class AndroidWay extends Activity { TextView name; ImageView thumbnail; LocationManager loc; Drawable icon; String myName; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); name = (TextView) findViewById(R.id.name); thumbnail = (ImageView) findViewById(R.id.thumbnail); loc = (LocationManager) getSystemService (Activity.LOCATION_SERVICE); icon = getResources().getDrawable(R.drawable.icon); myName = getString(R.string.app_name); name.setText( "Hello, " + myName ); } }
如果使用roboguice 來寫:
class RoboWay extends RoboActivity { @InjectView(R.id.name) TextView name; @InjectView(R.id.thumbnail) ImageView thumbnail; @InjectResource(R.drawable.icon) Drawable icon; @InjectResource(R.string.app_name) String myName; @Inject LocationManager loc; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); name.setText( "Hello, " + myName ); } }
只需使用@InjectView 來描述 view 和Id之間的關系,RoboGuice 自 動完成余下的工作,代碼簡潔易讀。在介紹完Google Guice ,再接著介紹 RoboGuice 在Android平台上使用方法。
查看全套文章:http://www.bianceng.cn/OS/extra/201301/34950.htm
前給例子介紹了如何使用PreferenceActivity 來顯示修改應用偏好,用戶對Preferences的修改自動存儲在應用對應的 Shared Preferenc
記得在很早之前,我寫了一篇關於Android滑動菜單的文章,其中有一個朋友在評論中留言,希望我可以 幫他將這個滑動菜單改成雙向滑動的方式。當時也沒想花太多時間,簡單修改了
唔,之前已經想過今後不動android,沒想到還是因為比賽的原因重操舊業。android有很多問題是由於eclipse的不完善造成的,比如今天遇到的這個問題 Unable
盡管在去年12月的時候微軟在Android平台上也推出了Outlook.com客戶端,但是上架之後並未收到消費者的好評,歸結原因主要是應用顯示有點過時,只是實現了基本的郵