android服务常驻后台,android-如何始终在后台运行服务?
您可以通过一些简单的实现来做到这一点:
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-如何始终在后台运行服务?相关推荐
- android服务常驻内存,android service常驻内存的一点思考
我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它. 我分别在android4 ...
- android service常驻通知栏,android实现常驻通知栏遇到的问题及解决办法
实现常驻通知栏时遇到的问题: 无论如何就是不显示通知,查看日志发现貌似报错了: 2020-06-28 14:11:34.923 6387-6387/xxx E/CrashReport: android ...
- Android面试必过——Android常见的问题
Android常见的问题 标签(空格分隔): 移动开发 常见算法问题的 Java 实现 资料可见 算法介绍可见 算法是很多公司面试必须,国内 BAT 基本面试中都会有,尤以百度为盛. 常见设计模式的 ...
- android中服务播放音乐,为什么我们需要Android中的服务?音乐播放也可以通过后台线程完成...
采访中有人问我这个问题.我不确定这是否是问这个问题的合适论坛,因为它不涉及任何代码,而是对android概念的理解. 问题是"当所有事情都可以通过Android中的后台线程完成时,为什么我们 ...
- android服务绑定音乐播放器,Android开发【04-21求助贴】使用后台服务的音乐播放器...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import android.Manifest; import android.content.pm.PackageManager; import and ...
- android后台进程常驻,android 后台常驻,不会被kill
第一步: import android.app.Notification; import android.app.PendingIntent; import android.app.Service; ...
- Android 进程常驻(1)----开篇
这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程 支持系统2.3到 ...
- Android 进程常驻(2)----细数利用android系统机制的保活手段
这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程 支持系统2.3到 ...
- 如何检查服务是否在Android上运行?
如何检查后台服务是否正在运行? 我想要一个可切换服务状态的Android活动-它可以让我在关闭状态下将其打开,在开启状态下将其关闭. #1楼 这更适用于Intent Service调试,因为它们会生成 ...
最新文章
- git文件生命周期以及如何管理文件
- OpenCV的cv::cvtColor函数之“CV_RGB2GRAY”: 未声明的标识符错误解决方法
- 单片机\程序中的那些宏定义
- 蚂蚁森林快捷指令_利用快捷指令实现钉钉自动化打卡
- vmware virtualization software
- SDK 和 API 有什么区别
- SQL存储过程调试方法
- 需要大量设计的软件如何进行敏捷开发
- LeetCode之Z字形变换
- 电力系统微型计算机继电保护试题及答案,全国2010年7月高等教育自学考试电力系统微型计算机继电保护试题及答案.doc...
- CRM系统的营销工具亮点
- SYN 包在什么场景下会被丢弃?
- 给UILabel中的文字加删除线
- PyTorch深度学习(B站刘二大爷)第九讲 多分类问题
- Object.entries()
- 爱情刚刚开始是最美好的
- 应用JavaFX实现的填字游戏
- 2019.4.4【母亲进入了癫狂状态】
- 使用postgresql和Arcgis创建路网拓扑结构
- BZOJ2844:albus就是要第一个出场——题解
热门文章
- window和linux下Redis 安装和使用
- java list 命名空间,Spring JAVA 不同类加载器命名空间的理解
- Epic融资20亿,离元宇宙更进一步
- 苹果藏在 iOS 14.3 中的新算法被发现,CSAM 检测技术再遭抗议!
- PostgreSQL 摘得 DB-Engines 2020 年度数据库
- 一年翻 3 倍,装机量 6 亿台的物联网操作系统又放大招!
- 江湖有故人,欢迎来到程序员的江湖
- JavaScript 已被淘汰?
- Serverless 的前世今生
- 离职113天后,微软的“中国先生”沈向洋云受聘清华大学教授