在 Android 内将数据上传到 Internet 上的服务器
Upload data to server on Internet in Android
我正在尝试在有互联网且应用程序未在前端 运行ning 时在后台将数据上传到服务器。
所以我在某处读到这可以通过 JobService 实现。
我创建了一个简单的作业服务,它在 onStartJob 和启动画面中提示 activity。我调用了以下代码:
mJobScheduler = (JobScheduler)
getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo.Builder builder = new JobInfo.Builder(1,
new ComponentName(getPackageName(),
Unigen_Upload_JobScheduler.class.getName()));
builder.setPeriodic(60000);
builder.setPersisted(true);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
if (mJobScheduler.schedule(builder.build()) <= 0) {
Log.e("Value", "onCreate: Some error while scheduling the job");
}
第一次 运行 正确,但 1 分钟后 运行 又不正确。我不确定为什么没有发生这种情况?
另外,我还有一个问题,只要打开/更改 WIFI 或手机,就会触发吗?
我是否必须使用广播接收器来执行上述操作?
谢谢!
更新:
public class Unigen_Upload_JobScheduler extends JobService {
public Unigen_Upload_JobScheduler() {
}
@Override
public boolean onStartJob(JobParameters params) {
Toast.makeText(this,"Executed",Toast.LENGTH_LONG).show();
Log.e("Value","+_ what should I do");
/*
* True - if your service needs to process
* the work (on a separate thread).
* False - if there's no more work to be done for this job.
*/
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
JobScheduler 定期作业的最小间隔为 15 分钟。检查这背后的原因:
Why can't an interval be smaller than 15 minutes for periodic jobs?
JobScheduler's minimum periodic interval is 15 minutes or (15 * 60 * 1000) 900000ms. You can look into WorkManager which is a part of android jetpack 更方便使用。至于你的第二个问题,workmanager有各种场景任务调度的便捷方法。
我正在尝试在有互联网且应用程序未在前端 运行ning 时在后台将数据上传到服务器。
所以我在某处读到这可以通过 JobService 实现。
我创建了一个简单的作业服务,它在 onStartJob 和启动画面中提示 activity。我调用了以下代码:
mJobScheduler = (JobScheduler)
getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo.Builder builder = new JobInfo.Builder(1,
new ComponentName(getPackageName(),
Unigen_Upload_JobScheduler.class.getName()));
builder.setPeriodic(60000);
builder.setPersisted(true);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
if (mJobScheduler.schedule(builder.build()) <= 0) {
Log.e("Value", "onCreate: Some error while scheduling the job");
}
第一次 运行 正确,但 1 分钟后 运行 又不正确。我不确定为什么没有发生这种情况?
另外,我还有一个问题,只要打开/更改 WIFI 或手机,就会触发吗?
我是否必须使用广播接收器来执行上述操作?
谢谢!
更新:
public class Unigen_Upload_JobScheduler extends JobService {
public Unigen_Upload_JobScheduler() {
}
@Override
public boolean onStartJob(JobParameters params) {
Toast.makeText(this,"Executed",Toast.LENGTH_LONG).show();
Log.e("Value","+_ what should I do");
/*
* True - if your service needs to process
* the work (on a separate thread).
* False - if there's no more work to be done for this job.
*/
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
JobScheduler 定期作业的最小间隔为 15 分钟。检查这背后的原因:
Why can't an interval be smaller than 15 minutes for periodic jobs?
JobScheduler's minimum periodic interval is 15 minutes or (15 * 60 * 1000) 900000ms. You can look into WorkManager which is a part of android jetpack 更方便使用。至于你的第二个问题,workmanager有各种场景任务调度的便捷方法。