Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数据从一个活动传递到当前可见/活动活动?这是一个共同的好模式吗?_Java_Android_Android Asynctask - Fatal编程技术网

Java 如何将数据从一个活动传递到当前可见/活动活动?这是一个共同的好模式吗?

Java 如何将数据从一个活动传递到当前可见/活动活动?这是一个共同的好模式吗?,java,android,android-asynctask,Java,Android,Android Asynctask,我想实现一般的AsyncTasks工厂,以避免每次运行异步操作时都要编写大量重复代码 所以我想在GlobalActivity中定义这个工厂类,每个想要使用AsyncTasks工厂的活动都应该子类化,但是我需要在从GlobalActivity继承的每个活动中使用doInBackground方法的结果。我的想法是在该类中定义某个方法updateCurrentActivity(),每个子类都必须重写该方法,并对doInBackground结果进行一些操作(例如显示它)。但我不知道如何处理这个结果。例如

我想实现一般的AsyncTasks工厂,以避免每次运行异步操作时都要编写大量重复代码 所以我想在GlobalActivity中定义这个工厂类,每个想要使用AsyncTasks工厂的活动都应该子类化,但是我需要在从GlobalActivity继承的每个活动中使用doInBackground方法的结果。我的想法是在该类中定义某个方法updateCurrentActivity(),每个子类都必须重写该方法,并对doInBackground结果进行一些操作(例如显示它)。但我不知道如何处理这个结果。例如,以下是工厂onPostExecute定义:

protected void onPostExecute(HashMap<String, Object> result)
    {  
        currentActivityData = result;
                   //How to pass that result to the current Active
                   //activity which is overriding this method?
        updateCurrentActivity();
    }
受保护的void onPostExecute(HashMap结果)
{  
currentActivityData=结果;
//如何将该结果传递给当前活动
//覆盖此方法的活动?
updateCurrentActivity();
}

创建这样的工厂是一个共同的好主意吗。或者最好的做法是每次我想使用AsyncTask时都编写
新的AsyncTask…

您可以创建MyTask类来扩展AsyncTask,并从要执行任务的活动中传递一个构造函数中的处理程序,如

final Handler mHandler = new Handler() { 

  public void handleMessage(Message msg) 
  { 
       //get your data here
       int something = msg.arg1; 
  } 
}; 

public void myMethodInsideActivity{
    new MyTask(this, mHandler).execute();
}
从任务的预处理、进度更新或后期调用此函数,如下所示

Message msg = new Message();
msg.arg1 = 1;
actHandler.sendMessage(msg);

这样,您只有一个任务类和多个实例,每个实例都通过处理程序与它的活动相连接

在updateCurrentActivity方法中您在做什么?@ρσѕρєK一切。例如,只需在当前可见活动上显示结果即可使您自己成为一项
服务
,声明一个界面并将活动绑定到该界面,发布一些任务,获得有关结果的通知。