我有GPSTracker
班extends Service implements LocationListener
。
GPSTracker
也会覆盖onLocationChanged
方法。
在我的MainActivity
中,我创建了一个GPSTracker
的实例,并使用我在GPSTracker
类中声明的自定义方法来获取lat / lon。
如果MainActivity
的{{1}}被触发,如何通知我GPSTracker
?
onLocationChanged
班级
GPSTracker
答案 0 :(得分:3)
我看到两种方式通知您的MainActivity:
首先,您可以创建一个在您的MainActivity上实现并由GPSTracker触发的侦听器。
其次,您可以查看BroadcastReceiver。只需在主要活动上添加BroadcastReceiver即可。在OnLocationChanged方法上,您只需创建一个新意图:
Intent intent = new Intent("LocationChanged");
intent.setType("text/plain");
sendBroadcast(intent);
我认为第一种解决方案不是最容易的,而是更好的。
答案 1 :(得分:1)
您可以通过服务广播更改。
Intent broadcastIntent = new Intent("com.example.broadcast.gps.location_change");
broadcastIntent .putDouble("latitude", latitude);
broadcastIntent .putDouble("longitude", longitude);
sendBroadcast(broadcastIntent);
然后在你的MainActivity
听广播。
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
double latitude = intent.getDoubleExtra("latitude", 0.0);
double longitude = intent.getDoubleExtra("longitude", 0.0);
}
};
registerReceiver(receiver, new IntentFilter("com.example.broadcast.gps.location_change"));
答案 2 :(得分:0)
您应该在MainActivity中声明一个方法,如下所示
public void notifyLocationChanged(Double lat, Double lng){
//do some thing
}
在onLocationChanged方法的GPSTracker课程中
@Override
public void onLocationChanged(Location location) {
((MainActivity)mContext).notifyLocationChanged(location.getLatitude(),location.getLongitude())
}