一个界面如何用于不同的后台android任务?

一个界面如何用于不同的后台android任务?,第1张

一个界面如何用于不同的后台android任务?

我能想到的最简单的解决方案是修改

DelegateTaskCompleted
界面,如下所示:

public interface DelegateTaskCompleted{  public void JsonArrayLoaded(AsyncTask<String, String, String> task,         JSonArray result);}

然后,您

onPostExecute
将自己发送回如下所示:

protected void onPostExecute(String file_url)   {    pDialog.dismiss();          delegate.JsonArrayLoaded(this, gotNearestbeacons);}

最后,

MainClass
您可以在中根据以下类型进行条件检查
AsyncTask

 @Override public void JsonArrayLoaded(AsyncTask<String, String, String> task,       JSonArray result)     {         if(task instanceof GettingBeaconsList) {      //  do stuff related to the beacon list         }         else if(task instanceof GettingAirports) {  // do airport list stuff         }    }

这样一来,您就可以轻松识别

AsyncTask
通过响应发送的,而不必跟踪响应的时间(如果一个花费的时间比另一个花费的时间长)等。


或者,让另一个类扩展,

AsyncTask
但添加一个抽象变量以进行标识。

public class TrackableAsyncTask extends AsyncTask<String, String, String>{    public abstract int getId();    public static final int ID_AIRPORT = 1;    public static final int ID_BEACONS = 2;    ... etc}

然后让您的机场和灯塔

AsycTasks
扩展此范围。这将要求他们实施该
getId
方法。

public class GettingAirports extends AsyncTask<String, String, String> {     public int getId(){        return ID_AIRPORT;     }}

然后,

if (task instanceof GettingAirports)
除了执行条件 *** 作外,还可以执行以下
switch
语句:

switch(task.getId()){   case TrackableAsyncTask.ID_AIRPORT:       // run airport pre}

希望这可以帮助。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5560431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存