代码示例 2、AndroidManifest.xml 服务配置 四、源码及资源下载 参考 Google 官方文档 : 优化电池续航时间 管理设备唤醒状态 使设备保持唤醒状态 设置重复闹铃时间 上一篇博客...: 开发者可以设定触发任务执行的周期 , 该任务一般是通过发送延迟意图 PendingIntent 实现 ; ③ 广播接收者 : 一般使用 AlarmManager 定时发送 延迟意图 PendingIntent...ACTION 事件 ; private BroadcastReceiver receiver = new BroadcastReceiver() { @Override..., 并设置每隔 50 秒发送一次广播 , 广播接收者接收到该意图 , 就会处理对应事件 ; // 获取闹钟管理器 mAlarmManager = (AlarmManager) getSystemService...(ALARM_SERVICE); // 设置闹钟管理器每隔 50 秒发送一次延迟意图 mAlarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,
} private BroadcastReceiver alarmReceiver = new BroadcastReceiver() { @Override public void...在 Android 4.4 上的确按照规定的时间间隔在执行任务。哈哈,这下大功告成了!!!...SDK API >= 23 在 Android 4.4 上品尝到胜利的甜头后,你顺便在 Android 6.0 的设备上测试了一下。结果。。。。。。你又 TMD 傻眼了!...之前在 Android 4.4 上能用的 setExact() 方法在 Android 6.0 上因为低电耗模式又不能正常使用了。...(), TIME_INTERVAL, pendingIntent); } private BroadcastReceiver alarmReceiver = new BroadcastReceiver
一、闹钟的设置不需要数据库,但是展示闹钟列表的时候需要,所以需要数据库: public class MySQLiteOpenHelper extends SQLiteOpenHelper{ public..."); } //调用此方法时,判断数据库是否存在,不存在则创建 调用OnCreate方法,存在则不调,直接放回数据库对象 sqlitedb = this.getWritableDatabase...> 2、首页展示已设置过的闹钟列表: 1、首先需要判断要查询的表是否存在,不存在则需要创建...android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import...android.media.AudioManager; import android.os.Vibrator; import android.util.Log; public class AlarmReceiver extends BroadcastReceiver
Android程序中耗电最多的地方在以下几个方面 : 1、 大数据量的传输。 2、 不停的在网络间切换。 3、 解析大量的文本数据。 那么我们怎么样来改善一下我们的程序呢?...return info.isConnected(); [*]} else { [*] return false; [*]} [*] 很多人开发的程序后台都会一个service不停的去服务器上更新数据...,在不更新数据的时候就让它sleep,这种方式是非常耗电的,通常情况下,我们可以使用AlarmManager来定时启动服务。...AlarmManager am = (AlarmManager) [*] context.getSystemService(Context.ALARM_SERVICE); [*]...mReceiver = new BroadcastReceiver() { [*] public void onReceive(Context context, Intent intent)
intent 英文意思是意图,pending 表示即将发生或来临的事情。 ...pendingintent中保存有当前App的Context,使它赋予外部App一种能力,使得外部App可以如同当前App一样的执行pendingintent里的 Intent, 就算在执行时当前App已经不存在了...Intent一般是用作Activity、Service、BroadcastReceiver之间传递数据;而Pendingintent一般用在 Notification上,可以理解为延迟执行的intent...FLAG_UPDATE_CURRENT 这个简单解释一下,就是当存在时,先把原来的取消,然后创建一个新的,在AlarmManager服务时修改一个闹铃,用的比较笨的的方法,先取消然后重新注册,其实加上这个参数就行了...要注意的是,这个只更新extra data,不会修改其他内容,不能new一个Intent,还有就是如果你的Intent中需要传递Id或者其他数据,一定要用这个flags或者FLAG_CANCEL_CURRENT
Timer+TimerTask的实质是利用开启Thread来触发定时任务,所以TimerTask实际上运行于非UI线程,也就无法直接操作UI。...AlarmManager AlarmManager是Android提供的一个全局定时器,其使用范围要大于Timer方式。...FLAG_NO_CREATE : 如果不存在描述的PendingIntent,则不会创建新任务。...android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context;...mCount = 0; private AlarmReceiver alarmReceiver = null; public class AlarmReceiver extends BroadcastReceiver
最近注意到客户的一些场景是不需要真实得经纬度数据,它们的共同点是有平面设计图,在可视化层面只是展示点线面标注,点击有交互。如客户深圳深农集团《数字档位管理系统》显示档口平面图。...轮廓数据使用Geobuilding软件结合单影像图层绘制生产。通用的场景1、客户不关心经纬度数据,只是展示点线面(建筑面)做简单交互。2、有平面设计图为了解决这种场景。...Geobuilding软件在中增加了《忽略配准同步到单影像》选项,现在可以方便的导入任何图像,不需要再采集控制点,直接同步到软件【单影像】中忽略配准,图像将不会有正确的经纬度坐标数据。...基于此生产的GIS数据,不适合做坐标点动态更新的GIS场景,比如GIS场景中人车事件点位坐标的更新,需要配合正确的底图。适合单纯的GIS点线面(建筑面)展示。如图, 基于任意图片生产点线面数据。
当我们从服务端同步数据时,往往会在应用不被使用的时候时被唤醒触发执行某些操作。此时你可能希望使用重复闹钟。...但是如果存储数据的服务端是由你控制的,使用Google Cloud Messaging(GCM)结合sync adapter是一种更好解决方案。...比如:同步的触发可能基于一条“新数据”提示消息,而消息的产生可以基于服务器或设备,用户的操作(或者没有操作),每天的某一时刻等等。...“本地任务”指的是任何不需要访问服务器或者从服务器获取数据的任务; 同时对于那些包含有网络请求的闹钟,在调度时机上增加一些随机性。...设置重复闹钟 如上所述,对于定期执行的任务或者数据查询而言,使用重复闹钟是一个不错的选择。它具有下列属性: 闹钟类型(后续章节中会展开讨论); 触发时间。
PendingIntent对象 通过getBroadcast(Context context, int requestCode, Intent intent, int flags)从系统取得一个用于向BroadcastReceiver...pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。...正由于 PendingIntent 中保存有当前 Application 的 Context ,使它赋予带他程序一种执行的 Intent 的能力,就算在执行时当前 Application 已经不存在了,...主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送 和 警报器AlarmManager的执行等等。...PendingIntent contentIntent = PendingIntent.getActivity(this, 0, openintent, 0);//当点击消息时就会向系统发送openintent意图
>= Build.VERSION_CODES.KITKAT) { //KITKAT 19 OR ABOVE alarmManager.setExact(AlarmManager.RTC_WAKEUP...public static void notifyByAlarm(Context context,Map notifyObjectMap){ //将数据存储起来...AlarmTimerUtil.cancelAlarmTimer(context,"TIMER_ACTION",i); } //清除数据... 广播的写法 import android.content.BroadcastReceiver...import com.util.NotificationUtil; import java.io.IOException; public class AlarmReceiver extends BroadcastReceiver
这部分服务大部分都有一个Manager类,其实就是一个RPC调用,用户通过调用xxxManager的方法,实际上被Binder给迁移到system_server进程中对应的xxxManagerService...AccountManagerService -> AccountManager 提供账户、密码和authtoken管理设备上的账户 ContentService -> ContentResolver 内容服务...,主要是数据库等提供解决方法的服务。...NotificationManagerService -> NotificationManager 负责管理和通知后台事件的发生等,这个和statusbar胶黏在一起,一般会在statusbar上添加响应图标...deliverPI = PendingIntent.getBroadcast(context, 0,deliverIntent, 0); context.registerReceiver(new BroadcastReceiver
2.7 AlarmManager唤醒 思路:通过AlarmManager设置一个定时器,定时的唤醒服务 **保活强度:**killBackgroundProcess下,大部分情况work, ...系统服务 AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); ...用来作数据同步,由于并没有实际数据同步,所以此处就直接建立一个空的ContentProvider即可。...start_service(package_name, service_name); } 但这只是一个没有主动权的消息轮询器,说是守护其实很勉强,而且,这是要建立在保证c进程不挂的基础上,...3 参考链接 Android进程保活全攻略(上) http://blog.csdn.net/u012124438/article/details/53141113 【腾讯Bugly干货分享】Android
例如监听WIFI的开启状态、时间的获取,甚至是我们最常用的闹钟功能,都是结合着AlarmManager与广播来实现的。...ReceiverList: 继承自一个泛型为IntentFilter的ArrayList,保存着IntentReceiver句柄,同时有着匹配广播Intent的作用 mRegisteredReceivers中的数据在...BroadcastFilter, ResolveInfo和ReceiveList在前面的队列中都已经出现过了,我就不做解释了,只对App端的几个对象进行解释: ActivityThread: 客户端的”主线程”,本质上不是线程...,当新进程在Zygote成功创建后,会调用ActivityThread的main方法,而这个方法将会启动一个Looper,所谓的客户端主线程就运行在这个Looper上,main方法调用Looper.loop...方法 dumpsys activity b中保存着广播注册、发送中涉及的重要数据结构的实时状态与历史状态,对调试很有帮助
Navicat连接SQLserver数据库时报错: 未发现数据源名称并且未指定默认驱动程序 导致原因: navicat没有安装sqlserver驱动 解决办法: 打开Navicat的安装路径,Navicat
初始数据从/data/data/com.***.android.security/app_bin/forbitapplist.xml中获取,如果文件不存在,则从本地资源数组security_array_savepower_forbitalarms...中保存的数据,将获取的数据保存到forbitPkgs数组中,如果没有数据则返回null。...中保存的数据,将获取的数据保存到allowPkgs数组列表中;如果没有数据则返回null。...class UpdateXmlReceiver extends BroadcastReceiver { public UpdateXmlReceiver() { IntentFilter...if (type == AlarmManager.RTC_WAKEUP || type == AlarmManager.ELAPSED_REALTIME_WAKEUP) { if
TabAlarm extends LinearLayout { private Button btn_add; private ListView listView; // 自定义数据类型用于...c.getTimeInMillis())); saveAlarmList(); // 使用TimePickerDialog时,点击对话框的确定按钮,会添加两条数据...需要注册 package com.example.clock.tool; import android.content.BroadcastReceiver; import android.content.Context...; import android.content.Intent; import android.widget.Toast; public class AlarmReceiver extends BroadcastReceiver...网上说cancel失效,但我试了一下可行 //用法比较简单,网上或者API上都有 class MyCount extends CountDownTimer { public
它基本上是一个被动的数据结构,对要执行的动作进行抽象描述。 意图结构 意图的主要信息是: 动作要被执行的一般操作,如-,ACTION_VIEW等。...这是通过的过程中处理的意图的分辨率,其中意图映射到Activity,BroadcastReceiver 或者 Service(或有时两个或两个以上的活动/接收器),其可以处理它。...意图解析机制基本上是围绕安装的应用程序包中的所有 描述匹配一个Intent。...串 ACTION_DEVICE_STORAGE_OK 广播动作:表示设备上的内存不足情况不再存在 这是一个受保护的意图,只能由系统发送。 串 ACTION_DIAL 活动操作:拨打由数据指定的号码。...串 EXTRA_ALARM_COUNT AlarmManager在intent中用作一个int外部字段来告诉被调用的应用程序有多少未决的警报正在被意图传递。
= null) { connection.disconnect(); } } 3.解析XML和JSON数据 第一:XML数据(Pull解析和SAX解析) /* * 首先要获取到一个XmlPullParserFactory...lxj1137800599/article/details/50358765 和http://blog.csdn.net/lxj1137800599/article/details/50495046 6.BroadcastReceiver...的使用 public class AutoUpdateReceiver extends BroadcastReceiver { @Override public void onReceive(Context...第二个泛型参数指定为Integer,表示使用整型数据来作为进度显示单位。 第三个泛型参数指定为Boolean,则表示使用布尔型数据来反馈执行结果。...* 返回的数据会作为参数传递到此方法中,可以利用返回的数据来进行一些UI 操作, * 比如说提醒任务执行的结果,以及关闭掉进度条对话框等。
他会根据系统版本选择合适的方案执行任务,比如在API 23及以上使用JobScheduler,以下则使用BroadcastReceiver和AlarmManager,能兼容到API 14。...同时,他会将任务存储进数据库来保证关机重启后任务仍可执行(这点有待验证,因为国内机型太多了)。...{ //创建要传递的参数,最大10KB Data inputData = new Data.Builder().putString("input_data", "输入数据...延迟2秒执行 .addTag("MyWorker") //设置标签 .setInputData(inputData) //设置输入数据...优缺点 优点: 使用方便,内部会根据不同系统选择合适方案 能链式调度,让各任务按指定顺序执行 能配置各种执行状态,如有无网络、是否在充电 任务被存储进数据库,关机仍可执行(待验证) 缺点: 还没发现