如何成为一个偷懒又高效的Android开发人员

jopen 11年前

  英文原文:How to Become a Lazy but Productive Android Developer

  我敢肯定你对这个标题肯定心存疑惑,但事实就是如此,这个标题完全适合 Android 开发人员。据我所知, Android 程序员不情愿写 findViewById ()、点击事件监听等重复率较高的代码。那我们如何才能缩短编写业务逻辑代码的时间,并且避免写那些重复的代码呢?所以让我们来成为一个能偷懒又有高效率 的 Android 程序员。想知道怎么做吗?不用急,接下来我就会写到。

  有许多第三方的库和框架是可供我们使用。出于种种原因,我们并不知道这些库或者知道但还没用过。有的开发者开发了自己定义的库或者并不想使用第 三方的库。如果我们在应用程序开发的过程中使用一些第三方库,也许可以提高程序的可兼容性、漂亮的 UI 界面、让代码变得整洁等等。所以,我将研究更多像这样的第三方库来帮助初学者和有经验的开发人员。

  今天,让我们来讨论下“依赖注入函数库”。

  什么是依赖注入?

  依赖注入是一种软件设计模式,无论是在运行时还是在编译时,允许删除、改变硬编码依赖性。[来自 Wikipedia](维基百科资源):

  一些常用和普遍的依赖注入库有:

q1.png

  RoboGuice:

如何成为一个偷懒又高效的Android开发人员

  Roboguice 是一个用于 Android 应用的依赖注入框架,使用 Google 官方的 Guice 库位极大地简化了 Android 的依赖注入。让你的 Android 应用开发之路更加平坦顺利,编程更加简单有趣。

  当你调用 getIntent (),getExtras ()这些函数时你是否经常忘记检查是否为 Null?RoboGuice 可以帮助你。初始化 TextView 有必要调用 findViewById ()吗?不用,RoboGuice 已经为你完成了。

  通过使用 RoboGuice,你可以注入 View 视图控件、资源、系统服务或者其他任何对象。RoboGuice 能帮你精简应用程序的代码。代码越少意味着出现问题或 bug 的次数也就越少,从而可以把更多的精力花在项目中那些需要编写或修改的部分,使得阅读代码更加容易。

  让我们来看看各种 RoboGuice 库的使用方法。

  使用 RoboGuice 库 :

  • 控件注入:用@InjectViews 方法初始化控件,例如:@InjectView(R.id.textview1)TextView textView1。
  • 资源注入:用@InjectResources 方法初始化资源,例如:@InjectResource(R.string.app_name)String name。
  • 系统服务注入:用@Inject 方法初始化并获取系统服务,例如:@Inject LayoutInflater inflater。
  • POJO 对象注入:用@Inject 方法注入并初始化 POJO 对象,例如:@Inject Foo foo。

  安装

  要使用 RoboGuice,你需要下载 JAR 文件并把他们添加到环境变量中:

  我们来看看一个简单的一般事件代码:

  实例

public class TestActivity extends Activity{         TextView textView1;      TextView textView2;      ImageView imageView1;      String name;      Drawable icLauncher;      LocationManager locManager;      LayoutInflater inflater;      NotificationManager notifyManager;         @Override      protected void onCreate (Bundle savedInstanceState) {          // TODO Auto-generated method stub         super.onCreate (savedInstanceState);          setContentView (R.layout.layout_test);          textView1 = (TextView) findViewById (R.id.textView1);          textView2 = (TextView) findViewById (R.id.textView2);          imageView1 = (ImageView) findViewById (R.id.imageView1);          name = getString (R.string.app_name);          icLauncher = getResources () .getDrawable (R.id.ic_launcher);          locManager = (LocationManager) getSystemService (Activity.LOCATION_SERVICE);          inflater = (LayoutInflater) getSystemService (Activity.LAYOUT_INFLATER_SERVICE);          notifyManager = (NotificationManager) getSystemService (Activity.NOTIFICATION_SERVICE);          textView1.setText ("Hello World! RoboGuice demo");       }  }

  再看看使用 RoboGuice 精简代码后神奇之处。

  使用 RoboGuice

  你先要继承 RoboActivity 或者 RoboFragment,才能使用 RoboGuice 的依赖注入功能。

public class TestActivity extends RoboActivity{         @InjectView (R.id.textView1) TextView textView1;      @InjectView (R.id.textView2) TextView textView2;      @InjectView (R.id.imageView1) ImageView imageView1;      @InjectResource (R.string.app_name) String name;      @InjectResource (R.drawable.ic_launcher) Drawable icLauncher;      @Inject LocationManager locManager;      @Inject LayoutInflater inflater;      @Inject NotificationManager notifyManager;      @Override      protected void onCreate (Bundle savedInstanceState) {          // TODO Auto-generated method stub         super.onCreate (savedInstanceState);          setContentView (R.layout.layout_test);          textView1.setText (name);      }  }

  这么一对比,我想你肯定明白了为什么要使用 RoboGuice?再来看看有哪些好处:

  使用 RoboGuice 的好处

  • 不需要初始化控件,如有需要就用@InjectViews。
  • 不需要初始化系统服务,如有需要就用@Inject。
  • 不需要初始化像 Drawable,string 以及其他的资源,如有需要就用@InjectResource。
  • 以上实践能帮助你精简代码。
  • 越少的代码,越少的问题和 bugs。
  • 少量的代码让 Android 开发人员省力同时,也让他们能更专注于实际的业务逻辑。

  RoboGuice 和 ActionBarSherlock

  正如我前面提到的,你得在 RoboActivity 和 RoboFragment 中继承其中一个才能在 Activity 事件或 Fragment 中使用 RoboGuice。但是如果你已经在项目中使用了 ActionBarSherlock 去编译呢?那问题就在于,你已经继承了 SherlockActivity 或 SherlockFragmentActivity 中的一个。现在问题是,你不能同时使用 RoboGuice 和 ActionBarSherlock。

  解决方法是,为 Activities 和 Fragments 定义一个基类。然后你就能同时使用 RoboGuice 和 ActionBarSherlock 了。

  你可以在这里下载一些基类:

  https://github.com/rtyley/roboguice-sherlock 或者下载 JAR 包也是一样:RoboGuice+Sherlock.jar,你可以任选一个添加到你的项目。

  在 Android 应用程序中,我想我已经做了所有关于 RoboGuice 用法及好处的研究。如过有什么遗漏,请联系我。在接下来的文章,我会研究其他的函数库好让你成为一个既能偷懒又高效的 Android 开发人员。

  翻译: ImportNew.com - 蒋晨毅

  译文链接: http://www.importnew.com/8415.html