如何在android中创建可重用的AsyncTasks?

时间:2012-04-24 16:32:48

标签: java android android-asynctask

我在android中有一个应用程序,我在那里访问几个REST webservices。我使用AsyncTasks来访问这些并在之后进行一些UI更改。我想在不同的活动中使用其中一些调用。但是,根据我读过的所有教程,AsyncTasks在活动中用作内部类(这是有道理的,因为它们正在改变这些活动中的视图)。但是如何解决这些AsyncTasks的可重用性呢?更重要的是,我想说我想在位置变化时做一些AsyncTasks调用。我有一个LocationListener(它是一个单独的外部类),我想在onLocationChange()方法中进行API调用。但我无法访问我想要的观点,因为我不在活动类中。有没有人有一个很好的解决方案或想法如何做类的架构?谢谢。

1 个答案:

答案 0 :(得分:4)

您可以将Async任务创建为单独的类,而不是在任何活动中集成。

示例代码位于:::

之下
    public class KeyTask extends AsyncTask<Void, Void, String> {

    @Override 
    protected void onPreExecute() { 
        Log.i("onPreExecute", ".onPreExecute() — start");


    } 

    @Override 
    protected String doInBackground(Void ... params) {
        Log.i("TransmissionKeyTask", ".doInBackground() — start");

        }

    @Override
    protected void onPostExecute(String result) {
        Log.i("onPostExecute", ".onPostExecute() — start");
    }       
}

甚至你在下面添加构造函数::

public KeyTask(Context context) {
        // TODO Auto-generated constructor stub

}