Java Android自定义服务类实现
在决定如何实现我的后台定制服务类时,我有点困惑 我需要的是:Java Android自定义服务类实现,java,android,multithreading,location,locationlistener,Java,Android,Multithreading,Location,Locationlistener,在决定如何实现我的后台定制服务类时,我有点困惑 我需要的是: 位置更新和活动识别 RESTAPI调用和Geofence API 我不熟悉Android的后台处理,我不知道如何实现 是否可以创建ThreadPoolExecutor(任务管理器类、runnables等)并处理线程间通信 如果是,是否可以在线程类中侦听位置更新? 现在,我使用这个库()来监听位置更新 有更好的解决办法吗? 非常感谢您的帮助 这是在后台服务中使用谷歌API的最佳方式 你没有解释你所说的活动识别是什么意思 public
现在,我使用这个库()来监听位置更新 有更好的解决办法吗?
非常感谢您的帮助 这是在后台服务中使用谷歌API的最佳方式 你没有解释你所说的活动识别是什么意思
public class MyLocationService extends Service implements LocationListener,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
private GoogleApiClient mGoogleApiClient;
private LocationRequest mLocationRequest;
public MyLocationService() {
}
@Override
public void onCreate() {
super.onCreate();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API).
addConnectionCallbacks(this).
addOnConnectionFailedListener(this)
.build();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mGoogleApiClient.connect();
Toast.makeText(this, "Location services started", Toast.LENGTH_SHORT).show();
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onLocationChanged(Location location) {
System.out.println("MyLocationService.onLocationChanged");
// TODO with location updateshere
}
@Override
public void onConnected(Bundle bundle) {
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(1000); // Update location every second
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
Location loc = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
sendMyLocUpdate(loc, UserProfile.DRIVER);
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
@Override
public void onDestroy() {
Toast.makeText(this, "Location services stopped", Toast.LENGTH_LONG).show();
Location loc = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
sendMyLocUpdate(loc, UserProfile.PASSENGER);
mGoogleApiClient.disconnect();
super.onDestroy();
}
}谢谢,但当我关闭应用程序时,此代码将重新启动。如何防止它重新启动?在服务的onStartCommand()方法调用startForeground()和此服务的onDestroy()方法调用stopForeground()方法中,“startForeground()”用于向用户显示(带有通知)服务正在运行(播放音乐、广播等),这与我的情况不同。如果不是您的情况,然后,只有上述服务对您有效,或者您可以添加自己的逻辑。但每当启动此服务的activity destroy启动时,服务都会在activity destroy事件中重新启动