Android 有没有办法让AsyncTask更具可移植性?
目前,AsyncTask确实让我的代码乱七八糟。我需要用它来做点什么,doInBackground部分在不同的代码段中使用。但是,onPostExecute会发生变化 我不想将所有内容都输入到一种方法中,例如:Android 有没有办法让AsyncTask更具可移植性?,android,android-asynctask,Android,Android Asynctask,目前,AsyncTask确实让我的代码乱七八糟。我需要用它来做点什么,doInBackground部分在不同的代码段中使用。但是,onPostExecute会发生变化 我不想将所有内容都输入到一种方法中,例如: function doThis(String tag) { new AsyncTask<String, Void, String>() { @Override protected String doInBackground(Void... para
function doThis(String tag) {
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(Void... params) {
// Do that thing that needs to be done.
}
@Override
onPostExecute(String message) {
if (tag.equals("login")) {
// Do large segment of logging in code.
} else if (tag.equals("register")) {
// Do other large segment of registering code
} ... //and it goes on
}
}
函数点此(字符串标记){
新建异步任务(){
@凌驾
受保护字符串doInBackground(无效…参数){
//做该做的事。
}
@凌驾
onPostExecute(字符串消息){
if(tag.equals(“登录”)){
//执行大部分登录代码。
}else if(标记等于(“寄存器”)){
//做其他大段的注册代码
}…//事情还在继续
}
}
还有其他方法吗?或者,有没有更好的方法在后台完成工作后等待处理?您可以创建一个单独的类来扩展AsyncTask。然后创建一个接口,您的活动可以实现该接口,其方法可以在onPostExecute内调用。但是,您需要传递活动对这个新类的引用。一种方法:继承
abstract class BaseTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(Void... params) {
// Do that thing that needs to be done.
}
}
其他任务类型也是如此。我明白这一点……但如果您在一个活动中有多个异步任务的需求……即:一个屏幕上有10个按钮,所有按钮都执行不同的操作,但所有按钮都需要对http请求使用asynctask……您将创建10个不同的类……对吗?
class LoginTask extends BaseTask {
@Override
onPostExecute(String message) {
// just the "login" part here
}
}