在我的应用程序中,我基本上需要在后台执行两项任务。一个是与php服务器同步一些数据,定期发送值和更新本地数据库,另一个是主线程从服务器请求的下载文件,在下载完成时通知用户界面。
我只想在应用程序处于前台时执行这些操作。如果用户打开另一个应用程序,请完成当前事务并停止消耗资源。
此时我对如何实现这一点感到有些迷茫。我从来没有使用过服务,我真的不知道服务是否是一个有效的解决方案,因为当你希望你的代码在应用程序进入后台时仍然运行时会使用该服务。
我认为其他解决方案是实现某种Handler,它定期(例如20分钟)启动一个与服务器同步的线程。在请求下载并在结束时发送广播时,也可以使用线程。
那个解决方案怎么样?已验证?如果是,我如何检测应用程序(非活动)何时停止前景以取消处理程序的帖子?
提前致谢
答案 0 :(得分:1)
如果您选择服务,我建议您使用IntentService http://developer.android.com/reference/android/app/IntentService.html
当您实施 onHandleIntent 时,您可以拥有一个等待您希望它休眠的时间的循环,在它唤醒后它可以执行您想要的任务。
@Override
protected void onHandleIntent(Intent intent) {
while(true) {
yourBackgroundTask();
// Sleep
try {
wait(WAIT_TIME);
} catch (Exception e) {
Log.i(TAG, e.getMessage());
break;
}
}
}