英文:
Update database field before the connections changed and turned off in android studio
问题
我有一个即时通讯应用,数据库中有一个离线字段,希望在用户关闭WiFi或移动数据时更新此字段,就像WhatsApp和Telegram一样。
我该如何实现这个?我还使用了广播和一个服务来监听网络连接状态的变化,但我在解决这个问题时感到困惑。
英文:
I have a messenger app and I have an offline field in my database and want to update this field when user turn off the wifi or mobile data? like whats app and telegram?
How can I do that? I also use broadcast and a service to listen to the connectivity state change but I'm confuse to resolve this.
答案1
得分: 1
使用 JobService...
以这个示例为例:
OfflineJob 类:
public class OfflineJob extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
// 在这里编写你的代码
Toast.makeText(this, "任务已开始!", Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
你的活动:
@Override
public void onCreate(Bundle state) {
super.onCreate(state);
schedulerService();
}
private void schedulerService() {
// 在网络可用时将调用你的调度器服务
ComponentName component = new ComponentName(getPackageName(),
OfflineJob.class.getName());
JobInfo.Builder builder = new JobInfo.Builder(123, component);
// 设置其他约束条件
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
// 调度任务
mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
mJobScheduler.schedule(builder.build());
}
英文:
Use JobService...
Take this example:
OfflineJob class:
public class OfflineJob extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
//write your code here
Toast.makeText(this, "job started!", Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
Your activity:
@Override
public void onCreate(Bundle state) {
super.onCreate(state);
schedulerService();
}
private void schedulerService() {
// Your scheduler service will be called when the network is available.
ComponentName component = new ComponentName(getPackageName(),
OfflineJob.class.getName());
JobInfo.Builder builder = new JobInfo.Builder(123, component);
// Set some other constraints
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
// Schedule it
mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
mJobScheduler.schedule(builder.build());
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论