0

在我的应用程序中,我导入 gpx 和 kml 文件以在地图上显示轨迹和航点。对于这个操作,我使用了大约 5 种方法。一切正常,除非我尝试使用 exfilechoser 导入几个长的 gpx/kml 轨道。屏幕变黑几秒钟,logcat 说:跳过帧(> 600)。我怎样才能得到这些 UI 计算?或者我怎么能用大约 5 种方法来使用 AsyncTask?这可能吗?

4

3 回答 3

0

我认为您应该使用为此目的而设计的服务。文档中说:

Service 是一个应用程序组件,可以在后台执行长时间运行的操作。

您应该记住在服务中创建新线程。

注意:服务在其宿主进程的主线程中运行——服务不会创建自己的线程,也不会在单独的进程中运行(除非您另外指定)。这意味着,如果您的服务要执行任何 CPU 密集型工作或阻塞操作(例如 MP3 播放或网络),您应该在服务中创建一个新线程来完成这项工作。

于 2016-05-24T13:05:59.820 回答
0

有几种方法。

  1. 异步进行计算。Android SDK 提供Handler, IntentSevice, AsyncTask, HandlerThread异步解决问题。顺便说一句,建议使用多线程解决繁重的计算。

  2. 让服务器做计算。移动设备不适合计算,计算会消耗电量并影响应用程序性能。

于 2016-05-24T13:00:57.580 回答
0

通过查看您的问题,我会建议您使用handlerjava normal multi threading concept。我认为Asyntask在后台执行长时间运行的任务不是一个很好的方法。

在服务器端进行计算是很好的,它减少了移动站点的开销。

于 2016-05-24T12:48:47.000 回答