闹钟服务-静态注册的Braodcast在关闭程序的时候不启动,还是Alarmmanager的问题

问题描述

静态注册的Braodcast在关闭程序的时候不启动,还是Alarmmanager的问题
manifest

 <receiver android:name="".MyBroadcast"">            <intent-filter>                <action android:name=""com.mine.alarmtestdemo1.myAction"" />                <category android:name=""android.intent.category.DEFAULT"" />            </intent-filter>        </receiver>

点击事件发送广播

```public void onClick(View v) {
// TODO Auto-generated method stub
AlarmManager myAlarmManager=(AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent();
intent.setAction(""com.mine.alarmtestdemo1.myAction"");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi=PendingIntent.getBroadcast(context 1 intent PendingIntent.FLAG_UPDATE_CURRENT);
myAlarmManager.set(AlarmManager.RTC_WAKEUP System.currentTimeMillis()+7*1000 pi);
}

自定义的myBroadcast``` public void onReceive(Context context Intent intent) {        // TODO Auto-generated method stub        String action =intent.getAction();        if(action.equals(""com.mine.alarmtestdemo1.myAction"")){        Intent intent1=new Intent(contextGetAcivity.class);        intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        context.startActivity(intent1);        }    }

开着Demo的时候,可以正常,但发送完广播,关闭Demo,然后就没有然后了。。。
莫非是AlarmManager的问题。
求大神帮忙。

解决方案

最终发现是因为在退出的时候,如果清理内存或其它类似能杀死程序进程的都会清除广播。

解决方案二:
onfinish只有虚拟机清理缓存的时候才调,但是这是activity已经onstop了,等多久执行onfinish就不知道,你可以在返回键,或home键手动执行一下onfinish这个函数,把广播发出去。
另外看看mainfest权限,我做的时候是android2.2,后来新版本没测试过,不过建议你看看有没有新的权限条款(如监听进程退出的),有的话就加上。

解决方案三:
Intent intent = new Intent();
intent.setAction(response.getRemoteAction());
intent.putExtras(bundle);
this.context.sendBroadcast(intent);

时间: 2024-11-08 21:27:35

闹钟服务-静态注册的Braodcast在关闭程序的时候不启动,还是Alarmmanager的问题的相关文章

再说Oracle Listener动静态注册

监听器Listener是Oracle Client Process和实例远程建立连接关系的必经之路.借助Listener,Client Process可以实现和一个特定的Server Process建立连接关系,开启Session会话,操作Oracle Instance.   在Oracle体系中,Listener是一个独立的进程.Listener的运行是独立于Oracle实例的.在Windows或者Unix/Linux架构中,监听器都是被实现为一个独立的系统进程Process.监听器在工作中,

Oracle Listener 动态注册 与 静态注册_oracle

一.什么是注册 注册就是将数据库作为一个服务注册到监听程序.客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库.这个服务名可能与实例名一样,也有可能不一样. 在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务.) 相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对应的服务名(一个数据库可能对应有多个服

Oracle静态注册与动态注册详解_oracle

一.概述: Oracle的注册就是将数据库作为一个服务注册到监听程序.客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到这个数据库.这个服务名可能与实例名一样,也有可能不一样. 在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务.) 相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对应的服务名(一个数据库可

Oracle静态注册和动态注册

一.什么是注册? 注册就是将数据库作为一个服务注册到监听程序.客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库.这个服务名可能与实例名一样,也有可能不一样. 在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务.) 相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对应的服务名(一个数据库可能对应有多个

ASP.NET Core中的依赖注入(3): 服务的注册与提供

在采用了依赖注入的应用中,我们总是直接利用DI容器直接获取所需的服务实例,换句话说,DI容器起到了一个服务提供者的角色,它能够根据我们提供的服务描述信息提供一个可用的服务对象.ASP.NET Core中的DI容器体现为一个实现了IServiceProvider接口的对象. ServiceProvider与ServiceDescriptor 服务的注册与提供     利用ServiceProvider来提供服务     提供一个服务实例的集合     获取ServiceProvider自身对象  

ORACLE 动态注册和静态注册的区别(转)

1, oracle 10g 用netca方式建立的都默认为动态注册方式2,如果想改为静态注册的方式则在listener.ora 中加入如下内容即可 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = JEFF ) (OR

Android的广播Receiver动态注册和静态注册示例

广播接收器注册一共有两种形式 : 静态注册和动态注册. 两者及其接收广播的区别: 1.动态注册的广播 永远要快于 静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低. 2.动态注册广播不是 常驻型广播 ,也就是说广播跟随activity的生命周期.注意: 在activity结束前,移除广播接收器. 静态注册是常驻型 ,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行. 3.在同一个优先级下,谁先启动的快,谁将先接收到广播. 下面这个Demo,界面如下

Win7系统添加打印机无Print Spooler服务无注册表解决方法

  Win7系统添加打印机无Print Spooler服务无注册表解决方法.win764位系统刚装几天发现笔记本无法安装虚拟打印机,因为我经常使用PDF打印,比如cutePDF打印机.开始搜索各种经验,发现都无法解决问题, 总有各种疏漏,在此总结一下,供自己回顾,同时希望能惠及他人. 方法/步骤 问题描述,在设备与打印机中"添加打印机"时提示Windows无法添加打印机,后台相关服务没有运行. 通过百度知晓,原因可能是服务printer spooler没有运行.此时去查看该项服务.具体

Android手机闹钟服务AlarmManagerk开发案例_Android

AlarmManager通常用来开发手机闹钟,并且它是一个全局定时器,可在指定时间或指定周期启动其他组件(包括Activity,Service,BroadcastReceiver) 获取AlarmManager对象: getSystemService(Service.ALARM_SERVICE) 调用其中的方式设置定时器启动指定组件: set(int type,long triggerAtTime,PendingIntent operation)设置在TriggerAtTime时间启动由oper