在google上搜索了很长时间但不成功之后,发现几乎没有关于一个名为Droid-Fu https://github.com/kaeppler/droid-fu的方便的库的信息。
在阅读了创建者(http://brainflush.wordpress.com/2009/11/16/introducing-droid-fu-for-android-betteractivity-betterservice-and-betterasynctask/)或API (http://kaeppler.github.com/droid-fu)的介绍之后,我不知道如何定义一个新的更好的异步任务(哪些方法保存了什么信息等等)。
因此,如果有谁可以为我(以及其他人)提供一些有用的源代码或教程,我将非常感激!
(如果您需要项目的jar文件,请告诉我,我可以给您发送一份副本)
编辑:
这里有一个很好的例子! 和 这里
好的,下面是我在源代码中找到的一些附加信息:
让我们看看从这里我可以实现从then...still寻找一个工作的例子,尽管!
编辑2:
有几个例子可以找到这里和这里。我坚持它,但我得到了一个错误。唯一的区别是,我的AsyncTask不是在活动中定义的,而是自己定义的一个类。通过遍历代码可以发现,错误发生在创建(AsyncTask内置)对话框时。
这是我的书签:
马上就来
发布于 2011-12-07 18:56:52
Droid现在有点过时了,主要是因为缺乏片段支持。但我将从我编写的一个应用程序中给出一个使用它的例子。
首先,活动类必须子类BetterActivity (或BetterXXXActivity)。在我的代码中,我使用的是ListActivity,所以这里我的子类是BetterListActivity。我还定义了一个BetterAsyncTask子类,以便扩展一些功能。
public class DroidFuExample extends BetterListActivity {
private ExampleTask mTask;
private List<Stuff> mMainStuff;
private class ExampleTask extends BetterAsyncTask<Void, Void, Integer> {
private List<Stuff> mStuff;
private DroidFuExample mContext; // a context for lifecycle management
...
}
}现在,我的任务不需要参数,使用一个不确定的对话框,这样就不会发布进度,并且需要返回一个Integer。您的需求可能不同,这会影响类定义中使用的类型。
下一步是定义任务在后台处理的内容。在我的例子中,我需要填充mStuff。在任务类中,定义doInBackground()或doCheckedInBackground() (doChecked.如果您想要捕获异常,可以抛出它)。
protected Integer doCheckedInBackground(Context context, Void... params)
throws Exception {
mStuff = // some long-running code (no longer on the UI thread)
return 1;
}最后,您至少需要对结果做一些事情,比如更新类变量或填充UI或其他东西。这是在after中完成的
protected void after(Context context, Integer integer) {
if (integer >= someAcceptablePositiveConstant) {
mMainStuff = mStuff;
doSomethingInTheUIWithMainStuff();
} else {
//gah!
}
}正如您前面提到的,您可以对类做更多的工作,比如定义一个在任务之前在UI线程上工作的before()覆盖,或者使用failed() / handleError()来处理未检查/检查的故障。这只是一个简单的例子,希望能有所帮助。
发布于 2011-12-08 15:00:52
@ss真让人难受!错误很好地隐藏在BetterActivityHelper类中:
public static ProgressDialog createProgressDialog(final Activity activity,
int progressDialogTitleId, int progressDialogMsgId) {
ProgressDialog progressDialog = new ProgressDialog(activity);
if (progressDialogTitleId <= 0) {
progressDialogTitleId = activity.getResources().getIdentifier(
PROGRESS_DIALOG_TITLE_RESOURCE, "string", activity.getPackageName());
}
progressDialog.setTitle(progressDialogTitleId);
if (progressDialogMsgId <= 0) {
progressDialogMsgId = activity.getResources().getIdentifier(
PROGRESS_DIALOG_MESSAGE_RESOURCE, "string", activity.getPackageName());
}
progressDialog.setMessage(activity.getString(progressDialogMsgId));
progressDialog.setIndeterminate(true);
progressDialog.setOnKeyListener(new OnKeyListener() {
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
activity.onKeyDown(keyCode, event);
return false;
}
});progressDialogTitleId和progressDialogMsgId期望res/ value /string.xml.xml中有一个值:
<!-- Droid-Fu Progressdialog -->
<string name="droidfu_progress_dialog_title">Some nasty dialog title</string>
<string name="droidfu_progress_dialog_message">Some funny message</string>如果未定义它们,则将引发运行时异常。
不幸的是,如果最好的帮助类是无文档的,那么它们几乎是无用的。我花了几个小时才弄清楚出了什么问题。因此,NO再次向开发人员表示“谢谢”。沙尔
https://stackoverflow.com/questions/8419434
复制相似问题