首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    笔记58 | Android闹钟

    调度重复的闹钟 闹钟(基于AlarmManager类)给予你一种在应用使用期之外执行与时间相关的操作的方法。你可以使用闹钟初始化一个长时间的操作,例如每天开启一次后台服务,下载当日的天气预报。...设置重复闹钟 如上所述,对于定期执行的任务或者数据查询而言,使用重复闹钟是一个不错的选择。它具有下列属性: 闹钟类型(后续章节中会展开讨论); 触发时间。...如果你为同一个Pending Intent设置了另一个闹钟,那么它会将第一个闹钟覆盖。 选择闹钟类型 使用重复闹钟要考虑的第一件事情是闹钟的类型。..., AlarmManager.INTERVAL_HALF_HOUR, alarmIntent); 在一分钟后唤醒设备并激活一个一次性(无重复)闹钟: private AlarmManager...要防止闹钟被取消,你可以让你的应用在用户重启设备后自动重启一个重复闹钟。这样可以让AlarmManager继续执行它的工作,且不需要用户手动重启闹钟。

    1.9K30

    Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?

    相反,如果是要设置 30min 后或者明天下午 2 点的操作,则建议使用; 2)安排在后台进行的一些操作,例如:下载更新App或者上传日志等。...建议使用 WorkManager 而不是精确闹钟; 3)当系统处于空闲时,在大概的时间点处理事务,则可以调用非精确闹钟的一些 API 处理,例如使用 setAndAllowWhileIdle() 而不是...() 检查是否有该权限; 2)如果没有权限,则需要通过 Intent,设置 Action 为 ACTION_REQUEST_SCHEDULE_EXACT_ALARM 并加上应用包名调起设置页面,让用户赋予权限...5.2 更安全的全屏通知展示 在 Android11(API level 30)上就可以调用 Notification.Builder.setFullScreenIntent 方法在锁屏上展示一些全屏的通知了...不过确实可以打开设置全屏通知权限开关的页面,如下是全屏通知权限设置图及主要相关代码: 图4 打开全屏通知权限设置页 // code 4 val notificationBuilder = NotificationCompat.Builder

    5.2K10

    关于Android中设置闹钟的相对比较完善的解决方案

    我在这里写的这个demo抽出来了封装了一个类库,大家直接调用其中的设置闹钟和取消闹钟的方法即可。...在API 19 以前,AlarmManager的常用方法有三个: set(int type,long startTime,PendingIntent pi); 该方法用于设置一次性闹钟,第一个参数表示闹钟类型...从API 19开始,AlarmManager的机制都是非准确传递,操作系统将会转换闹钟,来最小化唤醒和电池使用。...解决遇到的坑 API 19以后如何设置重复闹钟 我们知道,我们在使用AlarmManager设置了提醒之后,是通过广播接收的,设置的提醒时间一到,系统发送我们自定义的广播,我们接收到,应用程序提醒。...那提醒的时候,我们可以再重新设置一次嘛,这就解决了API 19设置重复闹钟的问题。 根据判断系统版本,使用不同的设置闹钟的方法,进行设置。接下来我们通过广播接收系统发来的通知,进行闹钟提醒。

    2K100

    Intent 和 PendingIntent 区别

    PendingIntent 这个类用于处理即将发生的事情,比如在通知Notification中用于跳转页面,但不是马上跳转。 ...FLAG_UPDATE_CURRENT 这个简单解释一下,就是当存在时,先把原来的取消,然后创建一个新的,在AlarmManager服务时修改一个闹铃,用的比较笨的的方法,先取消然后重新注册,其实加上这个参数就行了...则不能,只能使用第一次的Intent。...还有一个问题就是怎么区分PendingIntent,主要是取消的时候要用到requestCode区分,但系统还是根据Intent的Action去区分的,如果Intent设置了Class,classData...,取消的时候Intent一定要设置要相同的,不然取消不掉就可能出现取消后Alarm还会响的问题,PendingIntent用的地方蛮多的,像 Notifications, AlarmManager等都会用到

    2.2K50

    融云技术分享:融云安卓端IM产品的网络链路保活技术实践

    因此相对 Timer 机制,这种方式比较费电,使用的时候一定要注意如下几点: 1)首先根据需求合理使用 AlarmManager 的闹钟参数。闹钟各参数的区别参考下表: ?...2)其次 AlarmManager 提供了 cancel() 方法,在设置新的定时任务前,通过 cancel() 方法取消系统里设置的同类型任务,避免设置冗余任务。...复合连接机制的基本步骤如下: 1)客户端连接导航服务器,导航服务器会下发应用对应的配置信息,其中包括连接服务器的地址列表; 2)客户端从第一个服务器地址尝试连接,并启动超时机制,如果连接失败或没有及时收到服务响应...B 服务里调用 stopForeground() 方法,取消通知。...不过在国内定制化的系统上,这种方式能成功重启的几率很低,需要用户在权限管理中心打开自启动等权限,才能成功拉活; 2)也就是前面讲过的心跳机制,不过这里要求使用 AlarmManager 设置 ELAPSED_REALTIME_WAKEUP

    3.3K40

    Android开发笔记(五十二)通知推送Notification

    上回的博文,博主介绍了PendingIntent的用法,下面再列出有用到它的场合: 1、用于定时器AlarmManager,处理时刻到达后的提醒动作 2、用于通知推送Notification,处理点击通知后的相应动作...为true时用户将不能从下拉列表中去掉该通知 setPriority : 设置该通知的优先级 setExtras : 设置该通知的Bundle参数信息 setContent : 设置一个定制视图RemoteViews...NotificationManager便是系统通知服务的管理类,它的常用方法如下: notify : 推送指定通知到状态栏和下拉列表 cancel : 取消指定通知。...调用该方法后,状态栏和下拉列表中的指定通知将消失 cancelAll : 取消所有通知 下面是NotificationManager的调用代码例子: NotificationManager...使用示例 为演示本文提到的几种推送,博主编码实现了下列三种方式的推送: 1、采用默认模板推送一个通知; 2、采用RemoteViews方式推送通知,并可根据部件上的点击事件改变通知内容;

    3.2K20

    Android开发笔记(一百四十三)任务调度JobScheduler

    有关AlarmManager的说明参见《Android开发笔记(五十)定时器AlarmManager》。...任务调度机制由三个工具组成,首先是JobInfo,它指定了一个任务的概要信息,比如何时启动,启动时需要满足什么条件等等;其次是JobScheduler,它是系统提供的任务调度服务,它的实例从系统服务Context.JOB_SCHEDULER_SERVICE...cancel:取消指定编号的任务。 cancelAll:取消所有任务。 getAllPendingJobs:获取所有挂起(即尚未执行)的任务。...在Service外部进行调度 在Activity代码中增加任务调度,需要声明JobInfo对象,并通过JobScheduler进行调度,具体代码如下所示: //将任务作业发送到作业调度中去 public...原因是onStopJob的触发是有条件的,首先这里的停止指的是取消任务而不是完成任务;其次必须在“onStartJob之后,jobFinished之前”取消任务,才会在jobFinished之后触发onStopJob

    1.2K30

    【Android开发高级系列】进程保活专题

    2.7 AlarmManager唤醒 思路:通过AlarmManager设置一个定时器,定时的唤醒服务     **保活强度:**killBackgroundProcess下,大部分情况work,     ...难点:需要手动设置账户,你如何骗你的用户给你手动设置账户完了之后不卸载你,必须联网 代码实现:     ① 建立数据同步系统(ContentProvider)         通过一个ContentProvider...android:userVisible 设置是否在“设置”中显示     android:supportsUploading 设置是否必须notifyChange通知才能同步     android:allowParallelSyncs...是否支持多账号同时同步     android:isAlwaysSyncable 设置所有账号的isSyncable为1     android:syncAdapterSettingsAction 指定一个可以设置同步的...实现代码:         首先定义 Activity,并设置 Activity 的大小为1像素: public class KeepLiveActivityextendsAppCompatActivity

    97930

    Android进程保活全攻略(上)

    , "一律5折", null); //设置通知默认效果 notification.flags = Notification.FLAG_SHOW_LIGHTS; startForeground...7) AlarmManager唤醒 思路:通过AlarmManager设置一个定时器,定时的唤醒服务 **保活强度:**killBackgroundProcess下,大部分情况work, 不敌...难点:需要手动设置账户,你如何骗你的用户给你手动设置账户完了之后不卸载你,必须联网 代码实现: ① 建立数据同步系统(ContentProvider) 通过一个ContentProvider...android:userVisible 设置是否在“设置”中显示 android:supportsUploading 设置是否必须notifyChange通知才能同步 android:allowParallelSyncs...是否支持多账号同时同步 android:isAlwaysSyncable 设置所有账号的isSyncable为1 android:syncAdapterSettingsAction 指定一个可以设置同步的

    1.4K50

    Tip | Android的Service相关知识提炼

    将任务常量id设置到Message实例对象的what字段中;  3.3....前台Service 前台Service类似通知, 只不过在构建好一个Notification之后, 不需要NotificationManager将通知显示出来, 而是调用了startForeground...Service,可以使用现有的系统服务; 通过getSyetemService()方法并传入一个Name 即可得到相应的服务对象, 常用的系统服务如下表: ?...下面学习AlarmManager系统服务,实现一个后台定时任务 调用AlarmManager的set()方法就可以设置一个定时任务, set()有三个参数(工作类型,定时任务触发的时间,PendingIntent...IntentService 使用Android提供的IntentService, 可以简单地实现一个异步的、会自动停止的服务; 新建类并继承IntentService, 类中提供一个无参的构造函数

    72050

    9.服务

    只不过这次在构建出Notification对象后并没有使用NotificationManager来将通知显示出来,而是调用了startForeground()方法。...这个方法接收两个参数,第一个参数是通知的id,类似于notify()方法的第一个参数,第二个参数则是构建出的Notification对象。...现在重新运行一下程序,并点击StartService或BindService按钮,MyService就会以前台服务的模式启动了,并且在系统状态栏会显示一个通知图标,下拉状态栏后可以看到该通知的详细内容...); 接下来调用 AlarmManager的 set()方法就可以设置一个定时任务了,比如说想要设定一个任务在 10秒钟后执行,就可以写成: long triggerAtTime = SystemClock.elapsedRealtime...其中 ELAPSED_REALTIME表示让定时任务的触发时间从系统开机开始算起,但不会唤醒 CPU。

    931110

    android AlarmManager讲解

    在Andriod系统中实现定时功能,最终还是要用到系统提供的AlarmManager,只是当一个定时完成后怎么继续处理,或者中间怎么更新定时的时间或者状态,像闹钟这种应用程序,每天重复定时,或者一周选择其中的几天...1、基本结构 Alarm 代表一条定时数据 AlarmInstance 代表一个定时项目的实例,一个AlarmInstance对应到一个Alarm,相比Alarm多存储了一些状态信息 AlarmStateManager...应该是这样的,Alarm表示原始的定时项,是一个基础数据,而AlarmInstance则代表了一个使用中的定时项目,或者是一个已经激活的定时项目,它的时间是可以变化的,比如闹钟响了以后延时5分钟再响,就需要改变这里的时间...; DISMISS_STATE,这个状态表示定时结束了,会根据定时项目的设置判断是否需要重复,从而决定要删除这个项目还是继续设定一个新的定时。...整体的框架就是这样,在AlarmStateManager里使用AlarmManager形成了一个定时的状态机,不断转移到下一个状态处理。

    2K50

    android功耗优化(2)--对齐唤醒

    实现原理:APK作为该功能的入口,勾选应用后,将勾选的应用写入黑名单,并通知framework黑名单内容变化;framework接收到通知后,自动获取黑名单中的应用,保存到列表中;在framework调用接口中检测应用是否在黑名单中...listPkgs:表示需要设置对齐唤醒的应用,如果这些应用已经安装,就会显示在对齐唤醒设置的界面上。...APK响应机制 APK在启动之后,就已经设置好了黑白名单,初始化过程就是加载界面的过程。...界面退出机制 在onPause()方法中判断resultList与saveList是否相同,如果不相同则重新保存对齐唤醒名单,并通知AlarmManagerService。...最后,通知AlarmManagerService。 (2)、如何通知AlarmManagerService?

    1.2K10

    Android应用保活全攻略:30个实用技巧助你突破后台限制

    前台服务(Foreground Service) 将应用的Service设置为前台服务,这样系统会认为这个服务是用户关心的,不容易被杀死。前台服务需要显示一个通知,告知用户当前服务正在运行。...使用AlarmManager定时唤醒 使用AlarmManager定时唤醒应用。通过设置一个定时任务,当到达指定时间时,使用PendingIntent启动应用。...使用反射调用隐藏API Android系统中有一些隐藏的API和系统服务,可以用于提高应用的存活率。...使用NotificationListenerService 通过实现一个NotificationListenerService并在AndroidManifest.xml中注册,可以监听系统通知栏的变化。...需要注意的是,为了使用NotificationListenerService,用户需要在设置中授权应用访问通知权限。 最后,你真的需要保活吗?

    4.7K21

    现代 WorkManager API 已发布

    suspend 标记的 doWork 方法,其中调用下载方法,并显示最新进度信息。...由于每次回调发生时都会提供一些最新的进度信息,所以我们可以利用这些信息来构建通知,并调用 setForeground 方法来向用户显示这些通知。...某个前台运行服务的通知是无法简单滑动取消的,此前的做法是为这条通知消息添加一个动作,当用户点击时会向 WorkManager 发送一个信号,从而按照用户的意图终止某项工作。...我们使用 NotificationCompat.Builder 设置通知的标题,然后添加一些文字说明。...首先根据自己的意愿设置默认进程的名称,这通常是应用的软件包名称,一旦定义了应用的默认进程,那么进程内调度程序就会在其中运行。但是辅助进程怎么办?

    1.5K20

    美团动态线程池实践思路开源项目(DynamicTp),线程池源码解析及通知告警篇

    目前项目提供以下通知告警功能,每一个通知项都可以独立配置是否开启、告警阈值、告警间隔时间、平台等,具体代码请看core模块notify包。...addWorker(command, false)) reject(command); } 可以总结出如下主要执行流程,当然看上述代码会有一些异常分支判断,可以自己顺理加到下述执行流程里...-1.image] *** 队列容量告警 容量使用率 = queueSize / queueCapacity 服务启动后会开启一个定时监控任务,每隔一定时间去计算任务队列的使用率,达到配置的threshold...tplv-k3u1fbpfcp-zoom-1.image] *** 任务执行超时告警 重写ThreadPoolExecutor的afterExecute()方法,根据当前时间和beforeExecute()中设置的...如果想使用通知告警功能,配置文件必须要配置platforms字段,且可以配置多个平台,如钉钉、企微等;notifyItems配置具体告警项,包括阈值、平台、告警间隔等。

    1.3K71
    领券