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).
相关推荐
android工具类 droid-fu.jar
Droid-Fu是一个开源的通用Android应用库,其主要目的是为让Android开发更容易,包含有许多工具类,还有非常容易用的android组件【Droid-Fu提供支持的领域包括:1、Android应用的生命周期帮助 2、支持处理Intents和...
android DroidPlugin插件使用android DroidPlugin插件使用android DroidPlugin插件使用android DroidPlugin插件使用
droid fu android应用框架源码 github上的 现在找不到地址了,希望给找不到代码的同学可以直接下载
droid-fu 是一个满足日常 Android 开发需求的实用库。 标签:droid
26.[开源][安卓][通用Android应用库]droid-fu-master
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 ...
android 系统 默认英文和数字字体是Droid Sans
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。这个源代码项目共包括了以下模块: ...
360手机助手使用的 DroidPlugin,它是360手机助手团队在Android系统上实现了一种插件机制。它可以在无需安装、修改的情况下运行APK文件,此机制对改进大型APP的架构,实现多团队协作开发具有一定的好处。 它是一种新...
NULL 博文链接:https://384444165.iteye.com/blog/1120512
Droid Sans Mono is a monospace font designed for user interfaces and electronic document
Droid
This is the Yotsuba Droid Android application project. This is a project to develop a decent 4chan viewing application for Android devices, targetting Ice Cream Sandwich and above. This application is...
An easy to use wrapper tools for Shared Preference of android Getting Started from JCenter or Add dependency in your module build.gradle file dependencies { compile '...
QML on Android 在小米5s手机上中文显示异常,重新设置软件调用的默认字库
上传的压缩文件包含PC版和Android版的内核调用源码范例 含有绘图的实现源码 音乐播放源码空着给大家 我偷懒了 ">mxp4droid开发版 rmxp4droid jar 将游戏界面端的绘图和音乐播放 游戏素材从rmxp4droid内核中完全抽离...
Droid Wall 手机防火墙 androidDroid Wall 手机防火墙 androidDroid Wall 手机防火墙 androidDroid Wall 手机防火墙 android