【发布时间】:2018-09-27 03:56:19
【问题描述】:
我不明白为什么服务 onStartJob 没有在 setOverrideDeadline(2000) 中提到的给定时间调用。
我正在安排这样的工作:
private void scheduleJob() {
JobInfo myJob = new JobInfo.Builder(0, new ComponentName(this, NetworkSchedulerService.class))
.setRequiresCharging(true)
.setMinimumLatency(1000)
.setOverrideDeadline(2000)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setPersisted(true)
.build();
JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(myJob);
}
JobService sn-p:
public class NetworkSchedulerService extends JobService implements
ConnectivityReceiver.ConnectivityReceiverListener {
private static final String TAG = NetworkSchedulerService.class.getSimpleName();
private ConnectivityReceiver mConnectivityReceiver;
@Override
public void onCreate() {
super.onCreate();
Log.i(TAG, "Service created");
mConnectivityReceiver = new ConnectivityReceiver(this);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i(TAG, "Service destroyed");
}
/**
* When the app's MainActivity is created, it starts this service. This is so that the
* activity and this service can communicate back and forth. See "setUiCallback()"
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand");
return START_NOT_STICKY;
}
@Override
public boolean onStartJob(JobParameters params) {
Log.i(TAG, "onStartJob" + mConnectivityReceiver);
registerReceiver(mConnectivityReceiver, new IntentFilter(Constants.CONNECTIVITY_ACTION));
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.i(TAG, "onStopJob");
unregisterReceiver(mConnectivityReceiver);
return true;
}
}
清单:
<service
android:name=".NetworkSchedulerService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE"/>
有人可以帮我解决这个问题吗?如果可能,请提供有关此延迟的详细说明。
【问题讨论】:
-
您能添加您的清单吗?您是否已将工作服务声明添加到您的清单中?
-
@AnisBENNSIR:请查看清单。
-
从您的实施中,我可以看到任何问题。您的工作是根本没有运行还是在 1 秒后运行,或者您希望它在 2 秒后运行?您能否详细说明预期的行为以及您所面临的具体情况...从您的实施中,您的接收器将在注册后立即取消注册...
-
@AnisBENNSIR:我期待在 2000 毫秒后拨打电话,但在将近 1 分钟后收到电话。连我的设备都充电了。不明白为什么通话会延迟。
标签: android android-jobscheduler jobservice