如何自动启动 AlarmManager 来启动计划活动?

2023-12-24

本教程来自android-er http://android-er.blogspot.com/2011/05/using-alarmmanager-to-start-scheduled.html, 主活动(AndroidScheduledActivity.java)启动一个AlarmManager来重复触发BroadcastReceiver(MyScheduledReceiver.java)。在MyScheduledReceiver的onReceive()方法中,它间接启动另一个活动(MyScheduledActivity.java)。这样活动(MyScheduledActivity.java)将按计划的时间间隔启动。 现在我将使用 AutoStart 自动启动,但我无法编写 AutoStartNotifyReceiver 。 请问您能给我一个如何管理的想法吗? 多谢 !

主要活动,AndroidScheduledActivity.java:

public class AndroidScheduledActivity extends Activity {

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      Button buttonStart = (Button)findViewById(R.id.start);
      buttonStart.setOnClickListener(new Button.OnClickListener(){

  @Override
  public void onClick(View arg0) {
    Intent myIntent = new Intent(getBaseContext(),
      MyScheduledReceiver.class);

    PendingIntent pendingIntent
     = PendingIntent.getBroadcast(getBaseContext(),
       0, myIntent, 0);

    AlarmManager alarmManager
      = (AlarmManager)getSystemService(ALARM_SERVICE);
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.SECOND, 10);
    long interval = 60 * 1000; //
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
      calendar.getTimeInMillis(), interval, pendingIntent);
    finish();
  }});
  }

}

然后是BroadcastReceiver、MyScheduledReceiver.java

public class MyScheduledReceiver extends BroadcastReceiver {

public void onReceive(Context context, Intent intent) {

 Intent scheduledIntent = new Intent(context, MyScheduledActivity.class);
 scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 context.startActivity(scheduledIntent);
}
}

和我的问题 AutoStartNotifyReceiver :

public class AutoStartNotifyReceiver extends BroadcastReceiver {

 private final String BOOT_COMPLETED_ACTION = "android.intent.action.BOOT_COMPLETED";

 @Override
 public void onReceive(Context context, Intent intent) {

  if(intent.getAction().equals(BOOT_COMPLETED_ACTION)){

????????????????????

  }

 }
}

Your AutoStartNotifyReceiver extends BroadcastReceiver类之所以存在,是因为当设备重置时警报会被清除。所以,在onReceive对于此类(有问号的地方),您需要使用相同的代码重新设置警报(当然,没有finish())你以前第一次这样做的时候onClick的方法AndroidScheduledActivity.

然后,您需要将以下条目放入您的Manifest让系统知道启动您的AutoStartNotifyReceiver当系统启动时:

<receiver android:name=".AutoStartNotifyReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
</receiver>

以及在的许可Manifest:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

现在,这一切都假设您只有一个闹钟并且每次只设置一种方式。如果情况并非如此,那么事情就会变得更加复杂。但根据您提供的少量信息,我的解决方案应该满足您的要求。

另外,由于您是这里的新人,请善意提醒:当有人对问题提供充分的答案时,提出问题的人(您)通过单击答案旁边的复选框来接受答案。这样回答者就会得到认可。欢迎来到SO!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何自动启动 AlarmManager 来启动计划活动? 的相关文章

  • 检测到设备正在振动?

    我使用下面的代码来振动设备 public void vibrator try Vibrator vibrator Vibrator getSystemService Context VIBRATOR SERVICE vibrator vib
  • Android第一次动画不流畅

    我正在尝试一个动画将 imageView 从屏幕底部滑动到屏幕中心 但是当我第一次执行此动画时 它不平滑 但当第二次执行动画时 它是正常且平滑的 我几乎尝试了所有方法 但无法解决我的问题 这是我的动画文件
  • Firebase Analytics 禁用受众国家/地区跟踪

    我正在开发一个严格不允许位置跟踪的应用程序 我想使用 Firebase Analytic 的其他功能 例如 PageTransitions 和 Crashalitics 但如果我无法禁用受众位置跟踪 我就无法使用其中任何功能 这是我在 An
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • KitKat(及更低版本)设备上的 Android Material Design

    我将在我们学校开发一个 Android 应用程序作为一个项目 我想使用 Google 的新 Material Design 但我知道它仅适用于 Android L 设备 Jack Underwood 最近发布了名为 Today Calend
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 接近语法错误(代码1)插入Android SQLite

    我正在创建一个通讯录应用程序 用户可以在其中输入姓名 电子邮件地址和号码 我希望将此数据保存在数据库中 但我似乎无法使插入方法起作用 我收到的错误是 android database sqlite SQLiteException near
  • 设置从 Facebook 登录获取用户电子邮件 ID 的权限

    我在用着Facebook 3 0 SDK对于安卓 我必须实施Facebook登录 我正在访问用户的基本信息 例如姓名 用户 ID 但我也想访问用户的电子邮件 我浏览了很多博客和论坛 但不知道该怎么做 我正在使用我自己的 android 按钮
  • 在我的Android中,当其他应用程序想要录制音频时如何停止录音?

    在我的应用程序中 服务通过 AudioRecord 持续录制音频 当我的应用程序运行时 其他与音频记录相关的应用程序 例如 Google 搜索 无法工作 如何知道何时有其他应用想要录制音频 以便我可以停止录制以释放资源 答案是MediaRe
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • Android - 将 ImageView 保存到具有全分辨率图像的文件

    我将图像放入 ImageView 中 并实现了多点触控来调整 ImageView 中的图像大小和移动图像 现在我需要将调整大小的图像保存到图像文件中 我已经尝试过 getDrawingCache 但该图像具有 ImageView 的大小 我
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想

随机推荐

  • 如何检测一列中的更改并标记另一列中的更改

    我试图标记进程何时开始和结束 代码需要检测更改何时开始和何时结束 并在另一列中进行标记 示例数据 date process 2007 0 2008 1 2009 1 2010 1 2011 1 2012 1 2013 0 Goal date
  • 如何在Nifi getMongo查询字段中获取ISO字符串

    我正在尝试使用表达式语言使用以下查询在 Nifi getMongo 查询字段中生成 ISO 字符串 remindmeDate gte now format yyyy MM dd T HH mm ss SSS Z GMT lte now to
  • R:可变宽度lookbehind的解决方法

    给定这个向量 ba lt c baa aba abba abbba aaba aabba 我想改变最后的结局a每个单词到i except baa and aba 我写了以下行 gsub lt a ab b 1 2 a i ba perl T
  • 帮助唐纳德·B·约翰逊的算法,我无法理解伪代码(第二部分)

    我无法理解唐纳德 约翰逊发表的关于在图中查找周期 电路 的论文的某些部分 更具体地说 我无法理解以下伪代码行中提到的矩阵 Ak 是什么 Ak 具有最少的强分量K的邻接结构 由 s s 1 n 导出的 G 子图中的顶点 更糟糕的是 后面的几行
  • 尽管令牌正确,但用户未经授权

    我正在尝试将 D365FO 与第三方应用程序集成 我能够进行正确的设置并注册我的应用程序 获取令牌 如下所示 我用的是resource作为开发机器上 D365FO 的链接 这是https usnconeboxax1aos cloud one
  • OpenCV.4.2 VideoCapture 上未处理的异常

    我刚刚安装了 OpenCV2 4 2 并使用 CMake 创建了一个 OpenCV 项目 我没有收到任何编译错误 我有几个处理图像的函数 并且有 2 个应用程序 1 处理视频数据 2 处理模拟数据 除了从视频中提取数据之外 这两个应用程序是
  • 输入上的碗式下划线或边框[重复]

    这个问题在这里已经有答案了 我有一个底部只有边框的输入字段 现在我需要在输入的左侧和右侧创建一条小线 有点难以描述 所以我举个例子 input background color transparent height 20px padding
  • Logstash不处理filebeat发送的文件

    我已经使用 docker 设置了 elk 堆栈基础设施 我看不到 Logstash 正在处理的文件 Filebeat 配置为将 csv 文件从logstash 发送到logstash 再发送到elasticsearch 我看到logstas
  • 比较两个字符串忽略大小写的最佳方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想比较两个不区分大小写的刺痛 但我不确定最好的方法 字符串的平均长度为 20 这个问题更多的是关于最先进的技术 而不是关于最佳性能 我的大部分
  • mongodb中单引号的正则表达式

    在 mongodb shell 客户端中 如何查询查找带单引号的文档 我在正则表达式中转义了引号 但它不起作用 db coll find field 这应该有效 db coll find field x27 0x27 是哪里Unicode
  • C++ 中的共享指针、弱指针和惰性指针

    有谁知道实施shared ptr and weak ptr与惰性初始化伙伴一起 课程的要求是 A lazy ptr允许客户端稍后构造对象 如果有的话 的类 而不需要构造函数实现 A weak lazy ptr具有三种可能状态的类 尚未构造
  • Android Studio 中出现意外令牌:错误:(40, 61) 错误:非法字符:\8232

    当我有时 从 WEB 或其他外部源 将粘贴代码复制到 Android Studio 中时 我会得到一些不可见的字符 并且无法编译 有办法避免这种情况吗 自动重新格式化代码 插入 更改设置 Error 40 61 error illegal
  • 反应:未捕获范围错误:超出最大调用堆栈大小

    我正在使用 React 并且得到了我想要的功能 但由于某个地方的无限循环 它非常慢 我相信它在组件生命周期方法中 但我不确定如何重新格式化以下代码以具有相同的功能但没有无限循环 任何有关最佳实践的建议将不胜感激 class App exte
  • 轨道模型的别名

    我在 Rails 应用程序之一中的模型名称是OrganizationUser有没有办法为此模型创建别名作为 OU 或 OrgUser 以便我可以在 Rails 控制台中使用 如果 kishie 的答案不适合您 您可以创建另一个继承自 Org
  • 从子目录导入文件?

    我有一个名为tester py 位于 project project有一个子目录名为lib 有一个名为BoxTime py project tester py project lib BoxTime py 我想进口BoxTime from
  • 查找将从 Windows 命令行执行的程序的路径

    说我有一个程序X EXE安装在文件夹中c abcd happy 在系统上 该文件夹位于系统路径上 现在假设系统上还有另一个程序 也称为 X EXE 但安装在文件夹中c windows 是否可以从命令行快速找出如果我输入X EXE两者中的哪一
  • 如何在 MVC 索引页面中显示导航属性集合中的值

    我有一个名为 JobTitle 的 EF 实体类型 它有一个名为 Offices 的导航属性 它是另一个名为 Office 的实体类型的集合 我想在索引视图中显示 JobTitle 名称和相关 Office 名称的列表 View 脚手架默认
  • 使用 python 中的 csv 模块写入特定单元格

    我必须向 csv 文件中的特定单元格 例如第 8 个单元格 写入一个值 我可以看到有一个csvwriter writerow row 方法来写入整行 但我没有看到任何将值写入特定单元格的内容 The csv模块 http docs pyth
  • 使用现有 R 会话中的对象运行 Sweave 或 knit

    假设我有一个对象x在我当前的会话中 x lt 1 如何在 Sweave 或 knit 文档中使用此对象 而无需显式分配它 documentclass article begin document lt lt gt gt print x en
  • 如何自动启动 AlarmManager 来启动计划活动?

    本教程来自android er http android er blogspot com 2011 05 using alarmmanager to start scheduled html 主活动 AndroidScheduledActi