您可以通过一些简单的实现来做到这一点:

public class LocationTrace extends Service implements LocationListener{

// The minimum distance to change Updates in meters

private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters

private static final int TWO_MINUTES = 100 * 10;

// The minimum time between updates in milliseconds

private static final long MIN_TIME_BW_UPDATES = 1000 * 10; // 30 seconds

private Context context;

double latitude;

double longitude;

Location location = null;

boolean isGPSEnabled = false;

boolean isNetworkEnabled = false;

protected LocationManager locationManager;

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

this.context = this;

get_current_location();

// Toast.makeText(context, "Lat"+latitude+"long"+longitude,Toast.LENGTH_SHORT).show();

return START_STICKY;

}

@Override

public void onLocationChanged(Location location) {

if((location != null) && (location.getLatitude() != 0) && (location.getLongitude() != 0)){

latitude = location.getLatitude();

longitude = location.getLongitude();

if (!Utils.getuserid(context).equalsIgnoreCase("")) {

Double[] arr = { location.getLatitude(), location.getLongitude() };

// DO ASYNCTASK

}

}

}

@Override

public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override

public void onProviderEnabled(String provider) {

}

@Override

public void onProviderDisabled(String provider) {

}

/*

* Get Current Location

*/

public Location get_current_location(){

locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

if(!isGPSEnabled && !isNetworkEnabled){

}else{

if (isGPSEnabled) {

if (location == null) {

locationManager.requestLocationUpdates(

LocationManager.GPS_PROVIDER,

MIN_TIME_BW_UPDATES,

MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

if (locationManager != null) {

location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

if (location != null) {

latitude = location.getLatitude();

longitude = location.getLongitude();

// Toast.makeText(context, "Latgps"+latitude+"long"+longitude,Toast.LENGTH_SHORT).show();

}

}

}

}

if (isNetworkEnabled) {

locationManager.requestLocationUpdates(

LocationManager.NETWORK_PROVIDER,

MIN_TIME_BW_UPDATES,

MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

if (locationManager != null) {

if (location != null) {

latitude = location.getLatitude();

longitude = location.getLongitude();

// Toast.makeText(context, "Latgps1"+latitude+"long"+longitude,Toast.LENGTH_SHORT).show();

}

}

}

}

return location;

}

public double getLatitude() {

if(location != null){

latitude = location.getLatitude();

}

return latitude;

}

public double getLongitude() {

if(location != null){

longitude = location.getLongitude();

}

return longitude;

}

@Nullable

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public void onDestroy() {

if(locationManager != null){

locationManager.removeUpdates(this);

}

super.onDestroy();

}

}

您可以通过以下方式启动服务:

/*--Start Service--*/

startService(new Intent(Splash.this, LocationTrace.class));

清单中:

android服务常驻后台,android-如何始终在后台运行服务?相关推荐

  1. android服务常驻内存,android service常驻内存的一点思考

    我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它. 我分别在android4 ...

  2. android service常驻通知栏,android实现常驻通知栏遇到的问题及解决办法

    实现常驻通知栏时遇到的问题: 无论如何就是不显示通知,查看日志发现貌似报错了: 2020-06-28 14:11:34.923 6387-6387/xxx E/CrashReport: android ...

  3. Android面试必过——Android常见的问题

    Android常见的问题 标签(空格分隔): 移动开发 常见算法问题的 Java 实现 资料可见 算法介绍可见 算法是很多公司面试必须,国内 BAT 基本面试中都会有,尤以百度为盛. 常见设计模式的 ...

  4. android中服务播放音乐,为什么我们需要Android中的服务?音乐播放也可以通过后台线程完成...

    采访中有人问我这个问题.我不确定这是否是问这个问题的合适论坛,因为它不涉及任何代码,而是对android概念的理解. 问题是"当所有事情都可以通过Android中的后台线程完成时,为什么我们 ...

  5. android服务绑定音乐播放器,Android开发【04-21求助贴】使用后台服务的音乐播放器...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import android.Manifest; import android.content.pm.PackageManager; import and ...

  6. android后台进程常驻,android 后台常驻,不会被kill

    第一步: import android.app.Notification; import android.app.PendingIntent; import android.app.Service; ...

  7. Android 进程常驻(1)----开篇

    这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程 支持系统2.3到 ...

  8. Android 进程常驻(2)----细数利用android系统机制的保活手段

    这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程 支持系统2.3到 ...

  9. 如何检查服务是否在Android上运行?

    如何检查后台服务是否正在运行? 我想要一个可切换服务状态的Android活动-它可以让我在关闭状态下将其打开,在开启状态下将其关闭. #1楼 这更适用于Intent Service调试,因为它们会生成 ...

最新文章

  1. git文件生命周期以及如何管理文件
  2. OpenCV的cv::cvtColor函数之“CV_RGB2GRAY”: 未声明的标识符错误解决方法
  3. 单片机\程序中的那些宏定义
  4. 蚂蚁森林快捷指令_利用快捷指令实现钉钉自动化打卡
  5. vmware virtualization software
  6. SDK 和 API 有什么区别
  7. SQL存储过程调试方法
  8. 需要大量设计的软件如何进行敏捷开发
  9. LeetCode之Z字形变换
  10. 电力系统微型计算机继电保护试题及答案,全国2010年7月高等教育自学考试电力系统微型计算机继电保护试题及答案.doc...
  11. CRM系统的营销工具亮点
  12. SYN 包在什么场景下会被丢弃?
  13. 给UILabel中的文字加删除线
  14. PyTorch深度学习(B站刘二大爷)第九讲 多分类问题
  15. Object.entries()
  16. 爱情刚刚开始是最美好的
  17. 应用JavaFX实现的填字游戏
  18. 2019.4.4【母亲进入了癫狂状态】
  19. 使用postgresql和Arcgis创建路网拓扑结构
  20. BZOJ2844:albus就是要第一个出场——题解

热门文章

  1. window和linux下Redis 安装和使用
  2. java list 命名空间,Spring JAVA 不同类加载器命名空间的理解
  3. Epic融资20亿,离元宇宙更进一步
  4. 苹果藏在 iOS 14.3 中的新算法被发现,CSAM 检测技术再遭抗议!
  5. PostgreSQL 摘得 DB-Engines 2020 年度数据库
  6. 一年翻 3 倍,装机量 6 亿台的物联网操作系统又放大招!
  7. 江湖有故人,欢迎来到程序员的江湖
  8. JavaScript 已被淘汰?
  9. Serverless 的前世今生
  10. 离职113天后,微软的“中国先生”沈向洋云受聘清华大学教授