将数据从活动传递到工作服务



我想从活动类别到工作服务中获得LAT和经度值。我怎样才能做到这一点?我尝试使用putextras等使用意图(请查看下面的代码),但不能正确。

mainActivity.class

protected void createLocationRequest(Bundle bundle) {
    LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, new LocationCallback() {
        @Override
        public void onLocationResult(final LocationResult locationResult) {
            Log.i("onLocationResult", locationResult + "");
            latitude = locationResult.getLastLocation().getLatitude() + "";
            longitude = locationResult.getLastLocation().getLongitude() + "";
            Log.e("onLocationResult lat", latitude);
            Log.e("onLocationResult Lon", longitude);
            //I need to send latitude and longitude value to jobService? 
            //how to do that?
        //tried using intent but didn't seem to work
            //Intent mIntent = new Intent();
            //mIntent.putExtra("lat", latitude);
            //mIntent.putExtra("lon", longitude);
        }
    }, null);
}

myjobservice类

public class MyJobService extends JobService {
    @Override
    public boolean onStartJob(JobParameters jobParameters) {
        //I need to get latitude and longitude value here from mainActivity 
        return true;
    }
}

在构造JobInfo对象的地方,您使用setExtras()传递持久的额外键。

ComponentName componentName = new ComponentName(context, MyJobService.class);
PersistableBundle bundle = new PersistableBundle();
bundle.putLong("lat", lat);
bundle.putLong("lon", lon);
JobInfo jobInfo = new JobInfo.Builder(0, componentName)
        .setExtras(bundle)
        .build();

然后在您的工作服务中,您可以用

检索它们
@Override
public boolean onStartJob(JobParameters params) {
    params.getExtras().getLong("lat");
    params.getExtras().getLong("lon");
}

您可以将这些数据存储在共享的首选项中,当onstartjob()方法调用时,您可以从那里访问LAT长数据。

您还可以根据最新位置LAT值更新共享优先级值,并在服务运行时获得最新的LAT。

相关内容

  • 没有找到相关文章

最新更新