【发布时间】:2013-03-15 02:40:05
【问题描述】:
我不确定这是否可行,或者我的想法是否正确。
在Displaying Bitmaps Efficiently的Android开发者培训中,使用了AsyncTask的自定义版本,使代码与HONEYCOMB以下的android版本兼容。
这个伟大的answer 解释了AsyncTask 前后HONEYCOMB 操作之间的区别。指南中提供自定义版本的原因是,如果快速滚动图像的GridView,pre HONEYCOMB(任务池)中的默认值将很容易因java.util.concurrent.RejectedExecutionException 而崩溃。对于这种情况,需要默认的 postHONEYCOMB 版本(在附加线程上串行执行)。
我可以通过在我的项目中使用更新版本的AsyncTask 轻松做到这一点(就像在开发人员培训示例中所做的那样),但这与未来的更改不太兼容。
我想做的是:
如果版本是
HONEYCOMB或更高版本,使用实现 框架中提供了AsyncTask,如果更早,则使用 我的应用程序中提供的AsyncTask实现。
这可能(以及如何)还是我应该以不同的方式考虑?
编辑:
我了解如何根据正在运行的SDK_VERSION 提供条件。
我遇到的问题是AsyncTask 是一个抽象类,这意味着我必须提供一个实现。
例如。我有一个名为myTask 的AsyncTask,它扩展了AsyncTask,如下所示:
public class myTask extends AsyncTask<Void, Void, Void> {
// Implementations for the abstract functions (doInBackground)
}
如何确定扩展AsyncTask 的哪个版本?
【问题讨论】:
标签: java android android-asynctask android-compatibility