我有一个在后台运行的android服务,它每隔几秒就从服务器接收一次坐标。我不确定每次服务从服务器收到响应时如何在地图上显示坐标。请帮助或提出想法。
感谢
答案 0 :(得分:1)
只要想要更新地图上显示的位置,您的服务就可以广播意图。显示地图的活动应该为该boradcast注册接收器,并且boradcast的意图可以保存lat的值。而且很长。
答案 1 :(得分:1)
我不知道这方面的任何教程,但这是我的一个版本:
要发送广播,请使用Context类的“sendBroadcast(Intent i)”方法。 Service类扩展了Context,因此您可以从实现中访问它。
所以在你的服务中:
public static final String BROADCAST_ACTION="com.yourservice.update";
public void onStart( Intent intent, int startId ) {
...
Intent broadcastIntent = new Intent(BROADCAST_ACTION);
sendBroadcast(broadcastIntent);
...
}
您必须在Activity中注册此广播的接收器(可能在您开始播放之前),如下所示:
private BroadcastReceiver receiver=new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
//Here goes handling the stuff you got from the service
Bundle extras = intent.getExtras();
if(extras != null)processUIUpdate(extras);
}
};
public void onResume() {
...
//Register for the update broadcasts from the torrent service
registerReceiver(receiver, new IntentFilter(YourService.BROADCAST_ACTION));
...
}
当活动进入后台时,不要忘记取消注册:
public void onPause() {
...
//Deregister for the update broadcast from the torrent service
unregisterReceiver(receiver);
...
}
这应该有用。