我正在编写一个应用程序,它需要每分钟注册一次实际位置,无论是在前台还是后台。当用户决定停止跟踪时,我想收集所有收集的数据并使用它们。
为此,我考虑了一种试图节省电池并尽可能提高效率的架构。我想知道我的选择是否足够体面。这里是:
我通过 startService() 从 Activity 启动服务 S。该服务将构建一个数据结构来保存数据以供以后使用。活动和服务之间的通信也将通过 Messenger 对象创建。
我注册到将由接收器 R 管理的位置更新。它将是这样的:
this.lm= (LocationManager) getSystemService(LOCATION_SERVICE); Intent locationIntent= new Intent(getApplicationContext(),TravelPosition.class); PendingIntent locationPendingIntent= PendingIntent.getBroadcast(getApplicationContext(), 0, locationIntent, PendingIntent.FLAG_UPDATE_CURRENT); lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 7000, 1, locationPendingIntent);
每次触发接收器 R 时,它都会与服务 S 通信。我在考虑一个 startService(Intent),我将坐标放在 Intent 的附加项中。
服务 S 会将新数据(我的新位置坐标和我使用它们生成的其他信息)存储在其内部数据结构中。无论应用程序是在前台还是后台运行,一切都应该正常工作
一旦用户通过 Activity 中的按钮停止跟踪,后者将与服务通信以获取存储的数据,然后调用 stopService
你怎么看待这件事?还有一个额外的问题:如果用户想杀死应用程序,接收者会发生什么?它会重新打开应用程序吗?