Android Droid-Fu 介绍

移动开发 Android
Droid-Fu为广大的Android开发者提供了非常优秀的共享库,本篇文章将介绍一些Droid-Fu的一些想法以及一些核心特性。

Droid-Fu是什么 Droid-Fu 是一个通用的Android应用库

 

Droid-Fu 的主要目的是使得Android开发更加容易

Droid-Fu 是开源的还不够吗?

Droid-Fu 包含了许多工具类,还有非常易用的Android组件,所有这些对于Android应用来说都是非常有用的。Droid-Fu在以下领域提供了支持:

Android应用的生命周期、后台任务 、Http消息处理 、远程图片处理 、定制的各种Adapter … 等等。Droid还很年轻,不久的将来会有更加精彩的特性! 基础知识 的***优势是他提的应用生命周期帮助类。如果你正在开发一款Android应用,而它的主要任务是运行后台任务,例如从web上抓取数据,你肯定会在你的应用中使用Droid-Fu。

Droid-Fu

讨厌的AsyncTask,我们先来看看AsyncTask的问题吧:***,AsyncTask是什么?它是一个执行大开销操作的帮助类。如果你正在开发一个需要访问web服务端的手机应用,很可能你已经使用过它了。

其基本思路是:发起一个异步任务,当任务线程执行过程中,显示一个漂亮的进度框,当任务将结果返回到Activity时进度框关闭。酷,但是如果用户决定旋转屏幕,可异步任务还在运行怎么办(屏幕旋转当前的Activity会完成整个一轮生命周期。然后重新创建,回调onCreate()方法。)?或是一个电话打进来,打断应用,Android决定将该应用进程杀死怎么办?这两种动作都会中断activity,当下次继续使用该应用时会recreate该Activity。很不幸,AsyncTask仍旧在运行,并且保留一个指针指向老的Activity,因为重启的Activity在内存中式完全不同的一个对象(并且还会执行Activity的onCreate(),就好像Activity是***次启动一样)。我不确定AsyncTask是否还会将结果返回给老的Activity对象(如果是弱引用,可能它已经被回收),但是无论如何,新的Activity不会接收到该数据,因为完全是一个新的Activity实例。

现在,人们可以说:好的,就再做一次同样的工作,重新发送请求。是的,你可以这样做。但这是浪费,真的,让你觉得自己愚蠢,不是吗?另外,如果用户触发一个Web服务请求,然后翻转屏幕,发现不是自己想要的,又翻转回来,那么你的请求被发送平行的3倍。难道这就是你想要什么?大概不会。

BetterAsyncTask来救援 还好有Droid-Fu,他为我们提供了一个解决方案:BetterAsyncTask! 它的行为完全一样AsyncTask(事实上,这是一个AsyncTask),但它为你做一些额外的工作:首先,它会记录当前活动的实例,如果该实例改变,将发布的数据返回到新的实例。换句话说,你可以派遣你的任务,并且随意的来回翻转屏幕,BetterAsyncTask仍然会将任务的结果返回给当前的活动实例。换句话说,任务永远只运行一次。有一个问题,由于BetterAsyncTask没有办法找出哪一个是其当前活动的实例,它依赖于一个助手:

 

DroidFuApplication。这个类是Application的子类,如果你想使用BetterAsyncTask,你的应用程序从该类派生的,否则它不会工作。这是因为DroidFuApplication保留了活动实例的弱映射,当一个BetterAsyncTask完成后,它会通过您的Application获取Activity实例。

#p#

你所需做的仅仅是发起一个任务:

This is all you have to do to launch a task showing the standard Android indeterminate progress dialog:

  1. public class MyActivity extends BetterDefaultActivity {      
  2.  protected void onResume() {   
  3.    super.onResume();   
  4.     if (isLaunching()) {   
  5.        // this is explained further down this article   
  6.      MyBetterAsyncTask task = new MyBetterAsyncTask   (this);   
  7.      task.execute(someData);   
  8.            }   
  9.       }      
  10. }  

此外,BetterAsyncTask在运行期还会自动打开和关闭对话框,虽然你进步的运行,或触发活动标题栏的进度条。它还可以让你的任务在执行过程中抛出异常,然后再发布到你的错误处理handle。

BetterActivity 和 BetterService Droid-Fu为活动和服务提供一些简单但非常有用的辅助基类。目前,只有BetterDefaultActivity,BetterListActivity和BetterService,但我打算实现Better*系列Android活动基类(如MapActivity等)。

 

你将在以下方面获得帮助

生命周期帮助类 这些方法让你根据上下文的生命周期状态来决定完成具体什么工作。

 

isLaunching() :当且仅当Activity或Service***次执行onCreate时为true

isRestoring() :当Activity或Service在被Android杀死后重新恢复时为true

isResuming() :当Activity或Service执行onResume之前并没有执行onCreate时为true

isApplicationBroughtToBackground(): 有时是必要区分您的活动正由你自己的应用程序活动暂停,或由一个完全不同的应用暂停。这种方法可以得到真实的,如果由另一个应用程序暂停你的活动,那么返回true

Dialog帮助类 BetterActivity提供了如下的帮助方法让你轻松显示Dialog

 

showInfoDialog(): 显示了一个带有通知图标的警告对话框

showAlertDialog(): 显示了一个带有警告图标的警告对话框

showErrorDialog(): 和showAlertDialog一样,只是多了一个参数显示异常信息

showListDialog(): 显示了一个列表对话框,当点击一个条目,它会回调处理程序

所有的这些Dialog都是可以定制化的 (e.g. message or icon).

【编辑推荐】

Android开发:Activity之间的传值

Android开发进阶必读——评《精通Android 2》

Android应用开发教程:两个运行的Activity之间的通信

责任编辑:zhaolei 来源: 博客园
相关推荐

2024-02-26 08:22:51

开源Android应用宝库

2012-12-26 13:41:08

Android开发dispatchTou

2013-01-16 14:41:14

Android开发Android SDK

2010-01-27 16:41:48

Android特点

2017-01-23 21:35:58

Android人脸检测介绍

2011-04-18 17:30:04

开源iPhoneAndroid

2013-12-27 09:54:58

Android开发NDK

2009-03-24 08:33:14

AndroidGoogle移动os

2010-01-27 17:08:01

Android Hel

2010-02-07 13:55:39

Android图形

2009-09-17 17:20:21

Android Deb

2010-01-26 10:31:32

Android onK

2013-01-16 14:19:03

Android工程目录结构Android开发

2010-02-05 16:21:02

Android导航

2010-02-06 18:04:21

Android 接口

2010-03-05 10:38:16

Android移动操作

2013-01-10 13:50:25

Android开发组件

2010-03-02 09:13:55

Android手机系统

2010-01-26 17:36:17

Android实现全屏

2010-03-05 13:28:14

点赞
收藏

51CTO技术栈公众号