Droid-Fu是啥
Droid-Fu 是一个通用的Android应用库
Droid-Fu 的主要目的是使得Android开发更加容易
Droid-Fu 是开源的
Droid-Fu 包含了许多工具类,还有非常易用的Android组件,所有这些对于Android应用来说都是非常有用的。Droid-Fu在以下领域提供了支持:
Android应用的生命周期
后台任务
Http消息处理
远程图片处理
定制的各种Adapter
基础知识
Droid-Fu 的最大优势是他提的应用生命周期帮助类。如果你正在开发一款Android应用,而它的主要任务是运行后台任务,例如从web上抓取数据,你肯定会在你的应用中使用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实例。
你所需做的仅仅是发起一个任务:
public class MyActivity extends BetterDefaultActivity {
protected void onResume() {
super.onResume();
if (isLaunching()) { // this is explained further down this article
MyBetterAsyncTask task = new MyBetterAsyncTask(this);
task.execute(someData);
}
}
}
此外,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).
相关推荐
【标题】:“Droid Fu Android应用框架源码” 【描述】:“Droid Fu是一个专为Android应用程序设计的框架,提供了许多实用的功能,旨在简化开发者的工作。这个资源是Droid Fu的源码,虽然原始的GitHub仓库可能已经...
android工具类 droid-fu.jar
Droid-Fu是一个开源的通用Android应用库,其主要目的是为让Android开发更容易,包含有许多工具类,还有非常容易用的android组件【Droid-Fu提供支持的领域包括:1、Android应用的生命周期帮助 2、支持处理Intents和...
droid-fu 是一个满足日常 Android 开发需求的实用库。 标签:droid
Android DroidPlugin是一款开源的Android插件框架,它允许开发者将一个应用的功能模块化,以插件的形式动态加载到宿主应用中运行。这在很大程度上提高了应用的灵活性和可扩展性,使得开发者可以轻松地更新或添加新的...
标题中的“开源异步处理项目Droid-Fu详解”指的是Android平台上一个名为Droid-Fu的开源库,它专门设计用于提升Android应用的异步处理能力。Droid-Fu为开发者提供了一些方便的组件,如BetterActivity、BetterService...
26.[开源][安卓][通用Android应用库]droid-fu-master
在Android操作系统中,"Droid Sans"是一款默认的英文及数字字体,它为用户提供了一种清晰易读的视觉体验。这款字体设计简洁,线条流畅,适用于各种屏幕尺寸和分辨率,确保了用户在不同设备上都能获得一致的阅读感受...
【Android代码-droid-feed】项目是一个专门为Android开发者提供的开源库,它主要关注于实现一个可定制的、功能丰富的新闻或信息源阅读应用。这个项目的源码可以帮助开发者学习和理解如何在Android平台上构建类似...
标题"DroidCamX1.4.2 win linux android"指的是一个名为DroidCamX的软件版本1.4.2,该软件支持Windows和Linux操作系统,同时也适用于Android设备。这款工具的核心功能是允许用户将Android手机的摄像头转变为电脑的...
Android-DroidPlugin.zip,Android上的插件框架,运行任何第三方APK,无需安装、修改或重新打包,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全...
pOT Droid ist eine Android (4.0 ) Applikation, die das surfen im mods.de Forum auf Android Handys erleichtert und beschleunigt. APK Downloaden Das geht entweder auf Github bei den Releases, oder für ...
《Droid:Android系统中的字体探索》 在数字化的世界里,字体扮演着至关重要的角色,它们不仅传递信息,还塑造了界面的视觉风格。当我们谈论“Droid”时,我们实际上是在讨论Android操作系统中的一款重要字体系列。...
Pulse animation for Android. Maven pl.bclogic pulsator4droid 1.0.3 pom Gradle compile 'pl.bclogic:pulsator4droid:1.0.3' Usage In layout Use following properties pulse_count : Number of pulse...
Droid Wall是一个类似于 Linux 下的 iptables 的 Android 手机防火墙软件,界面运行效果请参见演示截图所示。本防火墙APP可以限制某些应用访问数据网络,包括 2G/3G 以及 Wi-Fi。这个源代码项目共包括了以下模块: ...
Droid Draw是一款专为Android平台设计的可视化用户界面(UI)开发工具,它允许开发者和设计师通过拖放的方式快速创建和布局应用程序的用户界面。这款软件简化了Android应用开发过程中的UI设计环节,使非编程背景的...
Android原机中英文字体包下载,主要是DroidSansFallback.ttf(中文字体)、DroidSans.ttf(英文字体)、DroidSans-Bold.ttf(英文加粗字体)这三种字体的打包下载,因为这三种字体是Andorid系统中几乎每一个显示界面...
DroidCamX 6.7包含了两个关键文件:一个是手机端应用,名为"com.dev47apps.droidcam-6.7.1.apk",这是一个专门为Android设备设计的应用程序,可以安装在手机上,提供摄像头功能。另一个是电脑端程序"DroidCam.Client...
DroidCamX是一款创新的应用程序,它允许用户将Android设备用作个人电脑(PC)的网络摄像头,从而实现手机摄像头共享的功能。这个6.4.8版本特别针对Android 8.0操作系统进行了优化,确保在该系统上的稳定性和兼容性。...