android– 经常获取和存储位置更好 – 服务或BroadcastReceiver?

android– 经常获取和存储位置更好 – 服务或BroadcastReceiver?,第1张

概述我在Service和BroadcastReceiver之间感到困惑.我正在开发基于位置的应用.在这里,我想在他/她的位置发生重大变化时(例如10米)将用户的位置存储到数据库中.我正在使用LocationListener,它工作正常.但我的困境是:在哪里编写onLocationChanged()方法–在BroadcastReceiver的onReceiv

我在Service和broadcastReceiver之间感到困惑.我正在开发基于位置的应用.在这里,我想在他/她的位置发生重大变化时(例如10米)将用户的位置存储到数据库中.

我正在使用LocationListener,它工作正常.但我的困境是:在哪里编写onLocationChanged()方法 – 在broadcastReceiver的onReceive()方法或服务中?

如果我正在使用服务,那么在哪种服务方法中,我应该写下面的代码吗?

这是我的位置监听器:

    LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);    LocationListener locationListener = new LocationListener() {        public voID onLocationChanged(Location location) {            if(location != null){                //Code to populate location-data into the database table.            }        public voID onStatusChanged(String provIDer, int status, Bundle extras) {}        public voID onProvIDerEnabled(String provIDer) {}        public voID onProvIDerDisabled(String provIDer) {}      };    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5, 10, locationListener);

任何人都可以建议我实施它的更好方法是什么?我已经阅读了有关Service和broadcastReceiver的所有AndroID开发者文档,但我仍然无法区分它们的用法?

解决方法:

在我看来,这取决于你想做多少工作.

如果您想在收到广播时做一些小事,那么您可以在broadcastReceiver的onReceive()方法中执行此 *** 作.但是,在主应用程序线程上调用onReceive().因此,如果需要太长时间,AndroID *** 作系统将终止它.

因此,如果您想要做一些可能需要一段时间的事情,您应该在后台线程的服务中执行此 *** 作.正如建议的那样,您可以将代码放在服务的onStart()方法中.如果不执行任何 *** 作(电池腰部和其他资源),请不要继续运行服务.每次收到广播时启动服务,并在完成分配的作业后立即完成.

附: Mark L. Murphy(又名CommonsWare)有几本关于AndroID开发的优秀书籍. Google Busy Coder指南AndroID开发.

更新:

关于在应用程序转到后台时取消后台任务的愿望.

考虑如果您的后台任务在中间被中断,您将采取的措施.你需要处理这种情况.如果你没问题,那么你可以使用AsyncTask或Service在后台完成你的任务.您的选择又取决于您的任务的大小和类型.

AsyncTask通常用于执行后台 *** 作并在UI线程上发布结果. AndroID文档suggests,AsyncTask的任务不应超过几秒钟.另一方面,Service旨在执行长时间 *** 作而无需与UI通信.

关于取消.当您的活动完成时,AsyncTask将被取消,因为它对UI线程感到厌倦.要停止服务,您需要从您的活动中拨打@L_419_1@.

由于您需要经常存储位置信息,您可以在活动开始时启动服务,使用服务的onBind()方法与其进行通信,然后在活动的onPause()方法中停止服务.

总结

以上是内存溢出为你收集整理的android – 经常获取和存储位置更好 – 服务或BroadcastReceiver?全部内容,希望文章能够帮你解决android – 经常获取和存储位置更好 – 服务或BroadcastReceiver?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1106200.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存