2014-09-03 41 views
0

在我的应用程序中,活动A连接到服务器数据库,保留来自不同城市的经度和纬度,活动B连接到Google地图方向计算城市之间的距离。结果通过列表适配器显示。AsyncTask or threads

  1. 因为每次都有几个距离需要计算(20-30),这是实现这一点的最快方法;多次使用AsyncTask或使用线程;

  2. 我应该合并这两项活动加快工作; (不过,我面临的问题,因为FragmentActivity,延伸课堂活动B的不支持清单适配器

感谢

+0

你知道AsyncTask使用正确的线程吗? – Simas 2014-09-03 16:44:43

+0

我对线程不熟悉。这就是为什么我要求 – user3649152 2014-09-03 16:48:26

+0

执行并发指令的方法只有两种,一种是使用Process,另一种是使用Thread。我建议你阅读[这篇文章。](http://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html) – Paulo 2014-09-03 16:58:43

回答

0

1)多线程

我个人很喜欢AsyncTasks因为他们是干净的方式来处理多线程。 (请注意,AsyncTasks在doInBackground()部分中的独立线程上运行)

但是,如果您认为AsyncTask的工作负载过于密集,那么android开发人员指南建议您改用后台服务。

对我来说,似乎你可能能够通过两个asynctasks序列:第一个从doInBackground()中的服务器获取lat/long值。在第一个onPostExecute()中,你可以开始第二个,给它服务器值。第二个可以在doInBackground()方法中计算距离。

2)活动和ListAdapter

合并两组活动纳入一个肯定。尽管FragmentActivity显然不能是一个ListActivity,你仍然可以从XML拿出你的ListView与

ListView list = (ListView) findViewById(R.id.list); 

或以编程方式创建

ListView list = new ListView(this); 

列表视图然后你就可以实例化适配器的任何类型你想要的类并将其设置为ListView。下面的例子演示了这一点使用一个CursorAdapter,但这将与任何转接器,自定义或内置工作。

CursorAdapter dataAdapter = new SimpleCursorAdapter(
      getActivity(), R.layout.list_spot, 
      cursor, 
      columns, 
      to, 
      0); 

    list.setAdapter(dataAdapter); 

希望这有助于!

+0

给投票的人这个你是否在意解释为什么每个人都为了这个缘故 – 2014-09-03 18:24:52

+0

谢谢乔纳森 – user3649152 2014-09-03 18:50:13

+0

没问题,很乐意帮忙。 – 2014-09-04 05:45:36