将数据从 Activity 传递到 JobService
Pass data from Activity to JobService
我想从 Activity class 获取纬度和经度值到 JobService。我怎样才能做到这一点?我曾尝试将 Intent 与 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);
}
我的工作服务class
public class MyJobService extends JobService {
@Override
public boolean onStartJob(JobParameters jobParameters) {
//I need to get latitude and longitude value here from mainActivity
return true;
}
}
您可以将这些数据存储在共享首选项中,当调用 onStartJob() 方法时,您可以从那里访问经纬度数据。
您还可以根据最新的位置经纬度值更新共享偏好值,并在服务 运行.
时获取最新的经纬度
在构建 JobInfo 对象的地方,您使用 setExtras() 来传递附加的 PersistableBundle。
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();
然后在您的 JobService 中,您可以使用
检索它们
@Override
public boolean onStartJob(JobParameters params) {
params.getExtras().getLong("lat");
params.getExtras().getLong("lon");
}
我想从 Activity class 获取纬度和经度值到 JobService。我怎样才能做到这一点?我曾尝试将 Intent 与 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);
}
我的工作服务class
public class MyJobService extends JobService {
@Override
public boolean onStartJob(JobParameters jobParameters) {
//I need to get latitude and longitude value here from mainActivity
return true;
}
}
您可以将这些数据存储在共享首选项中,当调用 onStartJob() 方法时,您可以从那里访问经纬度数据。
您还可以根据最新的位置经纬度值更新共享偏好值,并在服务 运行.
时获取最新的经纬度在构建 JobInfo 对象的地方,您使用 setExtras() 来传递附加的 PersistableBundle。
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();
然后在您的 JobService 中,您可以使用
检索它们@Override
public boolean onStartJob(JobParameters params) {
params.getExtras().getLong("lat");
params.getExtras().getLong("lon");
}