Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >BroadcastReceiver被调用后自行重启

BroadcastReceiver被调用后自行重启
EN

Stack Overflow用户
提问于 2016-12-01 10:18:59
回答 1查看 81关注 0票数 0

我正在使用alarmManager,自API19以来,除了使用setExact()方法设置的警报之外,所有的警报都不是精确的。因此,如果我想设置多个精确警报,我必须多次使用setExact()方法。我决定最好先设置一个,然后在广播接收器中设置另一个。问题是,每个BroadcastReceiver都会被触发,新的警报会被设置为BroadcastReceiver重启本身。

我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Calendar calendar = Calendar.getInstance();

        Date previoudTime = calendar.getTime();
        calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek-1);

        calendar.set(Calendar.HOUR, hour);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, 0);
        DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy");
        String sDate = dateFormat.format(calendar.getTime());
        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        Intent intent1 = new Intent(MyService_alarm.this, MyReceiver_Alarm.class);
        Log.e("Point_1", "Compare1 " + calendar.getTime());
        Log.e("Point_1", "Compare2 " + previoudTime);
        Log.e("Point_1", "Compare " + calendar.getTime().compareTo(previoudTime));
        if(calendar.getTime().compareTo(previoudTime) < 0) {

            int a = calendar.get(Calendar.WEEK_OF_MONTH);
            calendar.set(Calendar.WEEK_OF_MONTH,a + 1);
            //Log.e("Point_1", "Less " + calendar.getTime());
        }
        Long alarmTime = calendar.getTimeInMillis();
        intent1.putExtra("Size_ABC", y);
        intent1.putExtra("Date",sDate);
        intent1.putExtra("Position",position);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(MyService_alarm.this, position, intent1, 0);
        //Also change the time to 24 hours.
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent);

BroadcastReceiver代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MyReceiver_Alarm extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        final MediaPlayer mediaPlayer = MediaPlayer.create(context, RingtoneManager.getActualDefaultRingtoneUri(context,RingtoneManager.TYPE_ALARM));
        SQLiteDataBase sqLiteDataBase = new SQLiteDataBase(context);
        final AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        audio.setStreamVolume(AudioManager.STREAM_MUSIC,sqLiteDataBase.getVolume(intent.getIntExtra("Size_ABC",1)),0);
        final int currentVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC);
        //Log.e("Point_1", "Current Volume " + currentVolume);
        //mediaPlayer.setVolume(0.50f,1.0f);
        mediaPlayer.start();
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                mediaPlayer.stop();
                //Log.e("Point_1", "Volume_after " + audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
            }
        }, 5000);
        Log.e("Point_1", "Alarm!!! " + sqLiteDataBase.getVolume(intent.getIntExtra("Size_ABC",1)));
        ParsePosition parsePosition = new ParsePosition(0);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy");
        Calendar calendar1 = Calendar.getInstance();
        Log.e("Point_1","Intent_Extra " + intent.getStringExtra("Date"));
        calendar1.setTime(simpleDateFormat.parse(intent.getStringExtra("Date"), parsePosition));
        int i = calendar1.get(Calendar.MINUTE);
        calendar1.set(Calendar.MINUTE, i + 3);
        long alarmTime = calendar1.getTimeInMillis();
        DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy");
        String sDate = dateFormat.format(calendar1.getTime());
        Intent intent1 = new Intent(context,MyReceiver_Alarm.class);
        intent1.putExtra("Date", sDate);
        intent1.putExtra("Position",intent.getIntExtra("Position",1));
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context,intent.getIntExtra("Position",1),intent1,0);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent);
        Log.e("Point_1","SDateP " + calendar1.getTime());
    }
}

Logcat(这只是重复的一部分):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Intent_Extra Thu Dec 01 03:15:00 GMT+05:00 2016
12-01 15:15:01.202  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ SDateP Thu Dec 01 03:18:00 GMT+05:00 2016
12-01 15:15:01.252  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ id 21
12-01 15:15:01.262  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Volume 0
12-01 15:15:01.272  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ id 21
12-01 15:15:01.282  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Volume 0
12-01 15:15:01.282  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Alarm!!! 0
12-01 15:15:01.282  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Intent_Extra Thu Dec 01 03:15:00 GMT+05:00 2016
12-01 15:15:01.282  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ SDateP Thu Dec 01 03:18:00 GMT+05:00 2016
12-01 15:15:01.482  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ id 21
12-01 15:15:01.482  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Volume 0
12-01 15:15:01.512  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ id 21
12-01 15:15:01.512  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Volume 0
12-01 15:15:01.512  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Alarm!!! 0
12-01 15:15:01.512  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Intent_Extra Thu Dec 01 03:15:00 GMT+05:00 2016
12-01 15:15:01.512  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ SDateP Thu Dec 01 03:18:00 GMT+05:00 2016
12-01 15:15:01.572  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ id 21
12-01 15:15:01.582  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Volume 0
12-01 15:15:01.602  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ id 21
12-01 15:15:01.602  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Volume 0
12-01 15:15:01.602  20321-20321/com.SetAndGet.amadey.myapplication5 E/Point_1﹕ Alarm!!! 0

这里出了什么问题?如何防止这种情况重演?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-12-01 18:25:30

我不认为你的广播接收器会自动重启。

我们可以通过两种方式注册我们的接收器: 1.通过清单文件静态注册2.通过registerReceiver(接收器)动态注册;

你可能同时使用了这两种方法,所以这种情况才会发生。我是个初学者。我只是想帮助你。如果我错了,很抱歉。希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40907965

复制
相关文章
JavaScript实现段落文本高亮
代码: <!doctype html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />    <title>文本高亮</title> <style> .bg-red { background-color: red; } </style> </head> <body> <div st
用户1174387
2018/01/17
2.4K0
JavaScript实现段落文本高亮
dotnet OpenXML 聊聊文本段落对齐方式
本文来和大家聊聊在 OpenXML 里面,文本段落对齐方式。在 Word 和 PPT 的文本段落对齐规则是相同的,对齐的规则比较多,本文将一一告诉大家
林德熙
2021/12/01
1.4K0
dotnet OpenXML 聊聊文本段落对齐方式
textwrap:Python格式化文本段落
前文是针对普通的字符串数据进行处理。今天,我们要讲解的textwrap库,是对多文本进行处理的库。比如对于段落的缩进,填充,截取等,都可以通过textwrap库进行操作。
luckpunk
2023/09/29
2720
textwrap:Python格式化文本段落
Python控制Word文件中段落格式与文本格式
本文主要介绍扩展库python-docx中关于Word文件中文本格式控制的接口和用法,可以使用命令pip install python-docx安装,然后通过名字docx来使用其中提供的功能。
Python小屋屋主
2019/09/24
9.1K5
Python控制Word文件中段落格式与文本格式
java打印两个整数_Java程序在两个数字之间打印Armstrong数字
阿姆斯特朗数字是一个等于其各个数字的立方之和的数字。例如,153是Armstrong数,例如-153 = (1)3 + (5)3 + (3)3
用户7886150
2021/04/28
1.2K0
Office OpenXml SDK 文本段落允许标点溢出边界属性
在进行 PPT 解析的时候,因为 PPT 是支持在文本框里面的文本段落设置允许标点溢出边界可以在符号超过了文本框的长度,不会换行,而是显示在文本框之外
林德熙
2020/05/09
6020
Office OpenXml SDK 文本段落允许标点溢出边界属性
如何计算两个字符串之间的文本相似度?
最近好久没有写文章了,上一篇文章还是九月十一的时候写的,距今已经两个月了,期间一直在忙一些工作上的事情,今天终于有点空闲,所以写一篇文章散散心。
呼延十
2019/11/18
3.6K0
如何计算两个字符串之间的文本相似度?
最近好久没有写文章了,上一篇文章还是九月十一的时候写的,距今已经两个月了,期间一直在忙一些工作上的事情,今天终于有点空闲,所以写一篇文章散散心。
呼延十
2019/11/13
3.8K0
sed提取两个关键字之间的内容_python提取文本指定内容
如果上述代码是列表页中要获取的部分代码,现在要获取 所有列表页 的tbody标签中每个tr标签下 除第三、四个td标签(这2个中可能有数据,也可能无数据) 外的其他4个td标签中的数据,该如何获取?
全栈程序员站长
2022/10/04
1.7K0
[Office] 段落间距调整
选中需要设置的段落
轻舞飞扬SR
2021/02/24
2.4K0
[Office] 段落间距调整
移动资讯跑马圈地告一段落,但未来依然充满变数
2011年门户网站大力投资移动客户端,掀起第一次移动资讯大战,并形成腾讯、搜狐和网易主导的三强格局,移动资讯时代,在腾讯移动化整体成功的背景下腾讯新闻强势崛起,形成一超多强的格局。在这之后,今日头条来势汹汹,个性化资讯客户端掀起第二次移动资讯大战。天天快报、一点资讯、Flipboard中国版,多家传统新闻客户端,再加上类似于腾讯体育这样的垂直应用,三类角色在移动资讯市场热战正酣。 近日今日头条被巨头投资的传言、一点资讯与OPPO达成换股合作,从侧面反映了移动资讯市场的竞争之白热化,市场格局正在被改写。 移
罗超频道
2018/04/27
5970
移动资讯跑马圈地告一段落,但未来依然充满变数
HTML 段落
上面的例子在大多数浏览器中都没问题,但不要依赖这种做法。忘记使用结束标签会产生意想不到的结果和错误。
用户8442333
2021/08/21
1.5K0
shell 两个日期之间循环
shell 日期循环 #!/bin/bash if [ $# == 2 ]; then datebeg=$1 dateend=$2 else echo "请输入开始时间和结束日期,格式为2017-04-04" exit 1 fi tStart=$(date +%s) THIS="$0" THIS_DIR=`dirname "$THIS"` cd ${THIS_DIR} beg_s=`date -d "$datebeg" +%s` end_s=`date -d "$
大数据工程师-公子
2019/03/14
1.6K0
两个App之间调起通信
前言 经常使用一些app的分享功能,比如点击QQ分享,就从app打开(跳转到)QQ,然后分享完之后又回到我们的app,那么这是怎样实现的呢? 假设有这么一个需求,由app1跳转到app2,当app2完成任务之后,要把app2中的某些信息传到app1中(假设我们自己的程序是app1) 过程 我们创建两个新的工程,一个叫Test1,一个叫Test2。 本篇文章将使用Test1作为第一个app的URL Schemes,Test2作为第二个app的URL Schemes。 Test1工程配置 由于iOS9.0之后跳
Scott_Mr
2018/07/05
5360
两个App之间调起通信
前言 经常使用一些app的分享功能,比如点击QQ分享,就从app打开(跳转到)QQ,然后分享完之后又回到我们的app,那么这是怎样实现的呢? 假设有这么一个需求,由app1跳转到app2,当app2完成任务之后,要把app2中的某些信息传到app1中(假设我们自己的程序是app1) 过程 我们创建两个新的工程,一个叫Test1,一个叫Test2。 本篇文章将使用Test1作为第一个app的URL Schemes,Test2作为第二个app的URL Schemes。 Test1工程配置 由于iOS9.0之后跳
Scott_Mr
2018/05/16
7990
浮动与清除浮动
浮动 float半脱离文档流(对元素,脱离文档流;对内容,在文档流) 浮动的定义:使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来。
河湾欢儿
2018/09/06
2.3K0
【CSS】浮动 ② ( 浮动语法简介 | 文字环绕效果 | 左浮动 | 右浮动 )
展示效果 : 图片是 行内块元素 , 与文字地位相同 , 无法实现文字环绕图片效果 ;
韩曙亮
2023/03/25
3K0
【CSS】浮动 ② ( 浮动语法简介 | 文字环绕效果 | 左浮动 | 右浮动 )
02.HTML元素/属性/标题/段落/文本格式化/链接
02.HTML元素/属性/标题/段落 /文本格式化/链接 HTML 元素 ---- HTML 文档由 HTML 元素定义。 ---- HTML 元素 开始标签 *元素内容结束标签 *<p>这是一个段落</p><a href="default.htm">这是一个链接</a><br> *开始标签常被称为起始标签(opening tag),结束标签常称为闭合标签(closing tag)。 ---- HTML 元素语法 HTML 元素以开始标签起始 HTML 元素以结束标签终止 元素的内容是开始标签与结束标签
Java帮帮
2018/03/15
4K0
02.HTML元素/属性/标题/段落/文本格式化/链接
第五节 关于浮动和清除浮动的解说,以及两个大坑不要踩
1.随便唠叨几句 这一节课我会对浮动元素和怎样清除浮动相关的技术进行一个讲解,同时,我会列举一些我们前端开发中常见的坑,希望大家以后不要在这些地方犯错。在开始今天的课程之前,有一个东西我需要先讲一下,学网页,我认为最最重要的就是学布局,如果一个网页,你不去布局,学再多的div加css也无济于事,你就算学了再多的特效,又能怎么样?那么,何为布局呢?很简单,就是一句话,把元素放在你想要放的地方,这个就是布局了。对于一些后台管理系统,其实最最常见的还是table布局,包括现在很流行的前端框架 - easyui,
剽悍一小兔
2018/05/17
1.1K0
点击加载更多

相似问题

浮动段落之间的中间文本

25

浮动段落

34

在两个表格之间放置一段文本

31

浮动:左div,右边有段落/文本

54

将图像浮动到段落(文本)的左侧

39
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文