展开

关键词

Android

setWindow(int, long, long, PendingIntent) setExact(int, long, PendingIntent) 从上面的两个方法我们可以看出,没有了repeat,就是只能响一次了 因此需要解决如下几个主要问题: 1.如何一个每天都准确提醒呢? 2.手机重启之后,是否还有效? 3.应用程序被杀死之后,是否还有效? 1.如何一个每天都准确提醒呢? // 不能用startActivity,会导致生成无数个activity alarm(context, intent); } /** * 如何一个每天都准确提醒呢 alarmManager.setWindow(AlarmManager.RTC_WAKEUP, triggerAtTime, interval, operation); } } 2.手机重启之后,是否还有效 我的华为手机貌似把这项功能给屏蔽了) public class BootCompleteReceiver extends BroadcastReceiver { /** * 手机重启之后,是否还有效

63120

关于Android的相对比较完善的解决方案

可以每天的,周一到星期天之间多选的,也可以选择一次性,跟系统的方式基本差不多吧。 效果图 来看分析和讲解之前,先看看效果吧,效果图如下: 界面 ? 提醒界面 ? 主要问题 API 19以后没有了重复,那如果一个每天都准确提醒呢? 手机重启之后,是否还有效? 应用程序被杀死之后,是否还有效? 那提醒的时候,我们可以再重新一次嘛,这就解决了API 19重复的问题。 ? 根据判断系统版本,使用不同的的方法,进行。接下来我们通过广播接收系统发来的通知,进行提醒。 ? 如果的id是一样的,后边的会自动覆盖先前。如果谁有比较好的解决应用程序被杀死后,失效的问题,欢迎大家提供出来分享。 demo和类库地址:https://github.com/loonggg/Android-AlarmManagerClock

992100
  • 广告
    关闭

    什么是世界上最好的编程语言?丨云托管征文活动

    代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    边开发边测试--故事从讲起

    这个方法定义了在时系统可能已经为你的分配延迟了。 1. 逻辑 (1)精确型逻辑(exact) ? 没什么好说,你好像是最乖的,虽然你不省电。 (2)非精确性逻辑(非exact) ? 是的你没看错,就有一个0.75*N的误差允许存在,而且误差这个值可能很大! 因此我们可以针对性计出与其相关的用例: -调节时间是否会生效?(type) -手机休眠/关屏/飞行模式/关机/省电模式等是否影响生效?(type) -时间在当前时间之前是否会异常? -从中大退管家 -停止并回收管家插件 -从中强制停止管家 -执行小米的清理进程 -高内存挤压管家进程被kill(使用内存填充) 3. com.android.chrome:的应用包名 type=1:的类型,即第一条中提到的几个类型 whenElapsed=1369361:该会在系统开机后,大概1369361

    75790

    笔记58 | Android

    当你使用 setInexactRepeating()方法时,Android系统会集中多个应用的重复同步请求,并一起触发它们。这可以减少系统将备唤醒的总次数,以此减少电量消耗。 从Android 4.4(API Level19)开始,所有的重复都将是非精确型的。 不同的类型会在本节课后半部分展开。 重复 如上所述,对于定期执行的任务或者数据查询而言,使用重复是一个不错的选择。它具有下列属性: 类型(后续章节中会展开讨论); 触发时间。 如果你为同一个Pending Intent了另一个,那么它会将第一个覆盖。 选择类型 使用重复要考虑的第一件事情是的类型。 当你使用该方法时,Android系统会集中多个应用的重复同步请求,并一起触发它们。这样可以减少电量的损耗。

    56130

    基于Alarmmanager实现简单功能

    本文实例为大家分享了Alarmmanager实现简单功能的具体代码,供大家参考,具体内容如下 代码: activity_main.xml <? <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/<em>android</em>" android:layout_width="match_parent android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="<em>设</em><em>置</em><em>闹</em><em>钟</em> ,triggerTime,2000,op); } /* <em>设</em><em>置</em><em>闹</em><em>钟</em> */ public void startSetAlarmClick(View view) { // 获取系统的<em>闹</em><em>钟</em>服务 AlarmManager am= (AlarmManager) getSystemService(Context.ALARM_SERVICE); //触发<em>闹</em><em>钟</em>的时间(

    20010

    Android开发与展示Demo

    一、不需要数据库,但是展示列表的时候需要,所以需要数据库: public class MySQLiteOpenHelper extends SQLiteOpenHelper{ public cursor.getString(cursor.getColumnIndex("update_time")))); } return clockList; } } 三、的增加即 c.set(Calendar.MINUTE, minute); //的分数 c.set(Calendar.SECOND, 0); //的秒数 c.set(Calendar.MILLISECOND, 0); //的毫秒数 :   调用TimePickerDialog实现,这是一个时间选择器,通过监听其选择的时间进行;   的主要代码如下: 1.获取系统服务: alarmManager

    7820

    Android实现小程序

    程序关闭再打开时间仍然保留你上次的时间。这就是Preferences的作用! 程序欢迎界面: ? 点击界面: ? 点击中的后的界面: ? 时间到了弹出dialog: ? 重复想起后的界面: ? 点击返回键弹出的提示: ? time1Share.edit(); editor.putString("TIME1", tmpS); editor.commit(); Toast.makeText(MainActivity.this,"大明时间为 time2Share.edit(); editor.putString("TIME2", tmpS); editor.commit(); Toast.makeText(MainActivity.this,"大明时间为 <string name="str_button1" </string <string name="str_button2" 删除</string <string name="str_title2

    36210

    Android通过AlarmManager类实现简单功能

    Android通过AlarmManager类实现,供大家参考,具体内容如下 简介 是生活中最常用的功能了,很多App都可以加入该功能,提醒用户某个时刻要做的事情。 在Android系统中可以通过AlarmManager类实现,AlarmManager类是专门用来定在某个指定的时间去完成指定的事件。 文件中对其进行声明,如下: <receiver android:name=".AlarmReceiver" android:process=":remote" / 接下来,在MainActivity中我们实现“ AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); // am.set(AlarmManager.RTC_WAKEUP () + (10 * 1000), (24 * 60 * 60 * 1000), pendingIntent); String tmpS = "时间为" + format(hourOfDay)

    54030

    Android中的Doze模式

    概述 Android 6.0引入的Doze机制在于节省系统耗电量,保护电池,延长电池的使用时间。当备未连接至电源,且长时间处于闲状态时,系统会将应用进入Doze,于App Standby模式。 响应 使用setAndAllowWhileIdle或SetExactAndAllowWhileIdle铃的则不会受到Doze模式的影响 setAlarmClock铃在Doze模式下仍然生效 STATE_INACTIVE 取消定位、传感器监听的 重新mInactiveTimeout时长的,也就是30分或者3分的Intent中,会发送一个广播ACTION_STEP_IDLE_STATE ); } 在接收到ACTION_STEP_IDLE_STATE的广播后,会调用stepIdleStateLocked,在该函数中,处理所有的状态变化,而在状态处理的过程中还会有几个Alarm被 在该函数中,主要涉及一些状态变化,以及,借图说明: ?

    1.3K10

    欢迎体验 | Android 12 开发者预览版 3

    精确的新权限 - 是应用安排定时工作的重要方式。在大多数情况下,应用应该使用 非精确 (inexact alarms),这样可以减少电池消耗。 Android 系统可以通过 低电耗模式 (Doze) 和应用待机模式 (App Standby) 等机制管理这些,从而最大限度地减少备唤醒和电池消耗。 对于那些需要精确的情况,例如铃应用和定时器,您仍然可以使用 精确 (exact alarms)。精确功能非常方便可靠,但也会加大电量消耗,在过度使用的情况下尤其如此。 针对 Android 12 的应用如果想要使用精确,现在需要申请一个新的权限: SCHEDULE_EXACT_ALARM。 不过,我们也会让用户看到拥有这个权限的应用,并让他们通过中的特殊应用权限 (Special App Access Permissions) 授予和撤销这个 "和提醒" 权限。

    7520

    Android开发笔记(一百六十)休眠模式下的定时器控制

    定时器AlarmManager常常用于需要周期性处理的场合,比如提醒、任务轮询等等。 比如原来调用setRepeating方法定了每隔10秒发送广播,但App在实际运行过程中,很可能过了好几分才发送一次广播,这意味着该方法将不再保证每次工作都在开发者的时间开始。 ,再调用set方法开启新。         结果Android计师大汗淋漓,却不肯认输,嘴里碎碎念:“此山是我开,此树是我栽,要从此路过,留下买路财。罢了罢了,甭管你的矛有多锋利,反正我规定休眠盾至少能抗住九分。” than once per 9 minutes, per app,意思是不管是setAndAllowWhileIdle还是setExactAndAllowWhileIdle,在休眠期内每个App每隔9分最多只能唤醒一次

    1.2K20

    Android实现简易功能

    本文实例为大家分享了Android通过广播来实现的具体代码,供大家参考,具体内容如下 1.创建广播接收RepeatingAlarm.java import android.content.BroadcastReceiver <intent-filter <action android:name="com.gcc.alarm"/ </intent-filter </receiver 3.通过代码一个 getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC, c.getTimeInMillis(), sender);//c为的时间的 AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); am.cancel(sender);//取消 } 5.响是弹出的对化框并播放音乐用 mp.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength()); 7.功能不是很完善,需要的可以修改使用,时间定可通过上篇博文来获取

    44010

    Android编程实现定时发短信功能示例

    1.可以直接使用AlarmManager对象的set方法来定具体的时间。 2.可以使用TImePicker的方式来定时间,这种方式比较灵活。 第四,新建一个AlarmReceiver类,来对进行响应。 1. twotextview; TextView threetextview; Button onebutton; Button twobutton; Dialog dialog = null; //新建日历对象,用来时间 : "+timeStr); twotextview.setText("您的号码为: "+oneeditext.getText().toString()); threetextview.setText 》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》 希望本文所述对大家Android程序计有所帮助。

    35531

    Android vitals 帮您解决应用质量问题

    当且仅当消息推送以及任务调度对您的任务不适用时,您才可以利用 AlarmManager 定唤醒。换个角度来说就是,仅当您想要在特定时间触发,不考虑网络以及其它情况,唤醒才是必要的。 当 Android vitals 显示过度唤醒时,您应采取何种对策? 为了解决过度唤醒问题,您须要确认应用在什么地方定了唤醒,然后降低这些的触发频率。 那么如何查看应用在哪些地方了唤醒呢? 若您认为使用唤醒无法避免,那么如果您的标签满足以下要求,Play Console 可以提供更好的分析数据: 在标签中包含包、类或者方法名称。 这也可以帮助您轻松确定在源中的哪些地方定了; 不要使用 Class#getName() 给命名,因为 Proguard 会对此产生混淆。

    33910

    Android系统服务

    另外创建一个只有外层布局的activity_clock.xml作为响时Activity的布局! android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" Log.e("HEHE",c.getTimeInMillis()+""); //这里的时间是一个unix时间戳 // 提示完毕 : Toast.makeText(MainActivity.this, "完毕~"+ c.getTimeInMillis(), PendingIntent pi = =PendingIntent.getActivity(MainActivity.this, 0, intent, 0); 调用AlarmManager的set( )方法单次类型

    21330

    Android机制实现定时任务功能

    Android实现机制, 需要调用AlarmManager.set()将铃时间记录到系统中,当铃时间到后,系统会给应用程序发送广播,我们只需要去注册广播接收器就可以了。 本文分三部分讲解如何实现: 目录: 1. 铃时间; 2. 接收铃事件广播; 3. 重开机后重新计算并铃时间; 1. , 这里为1分一次,在第2步我们将每隔1分收到一次广播 //int interval = 60 * 1000; //am.setRepeating(AlarmManager.RTC_WAKEUP <action android:name="android.intent.action.BOOT_COMPLETED" / </intent-filter </receiver 我在的时候遇到一点问题 我开始的代码是这样写的 alarmManager.set(AlarmManager.RTC_WAKEUP, (5*1000), sender); 我的本意是定五秒后启动 但是每次都是我之后立马就启动了

    94130

    Android中AlarmManager+Notification实现定时通知提醒功能

    : 若连续多个,则只有最后一个会生效,那么这种情况我们怎么处理呢? 我们可以给每个唯一的id,传入getBroadcast()第二个参数。在这里我是每一个id则自增1存入Shareprefrence里,保证id唯一性。 参数详解 type:类型 ELAPSED_REALTIME:在指定的延时过后,发送广播,但不唤醒备(在睡眠状态下不可用)。如果在系统休眠时触发,它将不会被传递,直到下一次备唤醒。 如果在系统休眠时触发,它将不会被传递,直到下一次备唤醒(在睡眠状态下不可用)。 * * @author xulei * @time 2016/12/13 10:03 */ public class AlarmTimer { /** * 周期性 *

    1.9K31

    Android使用CountDownTimer类实现倒计时

    下面使用CountDownTimer类实现倒计时小,CountDownTimer类其实很简单,一般只需重写其onFinish和onTick方法就可以实现倒计时小,代码如下: MainActivity startBtn.setOnClickListener(this); closeMusicBtn.setOnClickListener(this); setBrewTime(3); } /** * 倒计时初始值 (brewTime < 1) { brewTime = 1; } timeText.setText(String.valueOf(brewTime) + "m"); } /** * 开启 */ public void startBrew() { // 创建一个CountDownTimer对象记录时间 countDownTimer = new CountDownTimer(brewTime // 加载指定音乐,并为之创建MediaPlayer对象 alarmMusic = MediaPlayer.create(MainActivity.this, R.raw.music); // 为循环播放

    20620

    Android 新特性之文件加密对TEE的要求

    采用这种加密方式,当用户重新启动备后,手机的大多数核心功能都将无法立即可用。由于对数据的访问受单个用户凭据的保护,因此等功能将无法运行,无障碍服务将无法使用,并且手机将无法接听电话。 该功能处于启用状态时,已加密备在启动后将直接进入锁定屏幕,从而可让用户快速访问重要的备功能,例如无障碍服务和。 支持文件级加密的备还支持一种称为直接启动的新功能。 那直接启动是个啥功能? 当备已开机但用户尚未解锁备时,Android N 将在安全的模式下运行。这就是直接启动。 一个APP应用比如说应用,如果需要在直接启动模式下,则使用的是备加密存储。 启用了 FBE 的备上,每位用户均有两个可供应用使用的存储位: · 凭据加密 (CE) 存储空间:这是默认存储位,只有在用户解锁备后才可用。

    1.5K50

    Android6.0源码开发之修改默认音量default及max和min

    1,修改默认音量的位android/frameworks/base/media/java/android/media/AudioSystem.java public static int[] DEFAULT_STREAM_VOLUME 5, // STREAM_RING 铃声 11, // STREAM_MUSIC 音乐 6, // STREAM_ALARM /frameworks/base/services/core/java/com/android/server/audio/AudioService.java /** Maximum volume index /build/target/product/full_base.mk或者是android/build/target/product/core_base.mk ro.config.ringtone 手机铃声 ro.config.notification_sound=Pollux.ogg #提示音和通知 ro.config.alarm_alert=Alarm_Classic.ogg #铃声

    62970

    扫码关注云+社区

    领取腾讯云代金券