1.首先我们的目的是长期监听时间变化,事实上应用程序退出。

通过了解我们知道注冊ACTION_TIME_TICK广播接收器能够监听系统事件改变,可是

查看SDK发现ACTION_TIME_TICK广播事件仅仅能动态注冊:

Broadcast Action: The current time has changed. Sent every minute. You can not receive this through components declared in manifests, only by exlicitly registering for it with Context.registerReceiver().

所以要想实现长期监听时间变化。就须要借助后台服务的帮助了

2.解决方法(3步骤):

(1)在某个时间启动后台服务

package com.example.broadcastreceiverofdatachange;



import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;



public class MainActivity extends Activity {



@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);



//启动后台服务

Intent service=new Intent(this, TimeService.class);


startService(service);



}



}

(2)在服务组件中动态注冊广播事件

package com.example.broadcastreceiverofdatachange;



import android.app.Service;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.IBinder;

import android.util.Log;



public class TimeService extends Service {



@Override

public IBinder onBind(Intent intent) {



return null;

}



@Override

public void onCreate() {



super.onCreate();

Log.i("liujun", "后台进程被创建。

。。

");



//服务启动广播接收器,使得广播接收器能够在程序退出后在后天继续运行。接收系统时间变更广播事件

DataChangeReceiver receiver=new DataChangeReceiver();

registerReceiver(receiver,new IntentFilter(Intent.ACTION_TIME_TICK));



}





@Override

public int onStartCommand(Intent intent, int flags, int startId) {



Log.i("liujun", "后台进程。。

。");

return super.onStartCommand(intent, flags, startId);



}



@Override

public void onDestroy() {



Log.i("liujun", "后台进程被销毁了。。。

");


super.onDestroy();

}



}

(3)在广播接收器组件中操作

package com.example.broadcastreceiverofdatachange;





import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;





public class DataChangeReceiver extends BroadcastReceiver {



@Override

public void onReceive(Context context, Intent intent) {



Log.i("liujun", "时间发生变化。。。

");



}





}

//至此长期实现后台监听时间变化Demo就完毕了。

。。

Android实现后台长期监听时间变化的更多相关文章

  1. Android 5.0 以上监听网络变化

    大家好,大概有一个多月没有更新博客了,我是干什么去了呢?很明显,程序员当然要加班……这一次跟大家分享一下新项目的一些心得. 监听网络变化在开发中是经常用到的,例如我们断网有一些友好的提示,或者根据不同 ...

  2. Android学习——动态注册监听网络变化

    新建一个BroadcastTest项目,然后修改MainActivity中的代码,如下: public class MainActivity extends AppCompatActivity { p ...

  3. android动态注册监听网络变化异常

    在使用广播接收器监听网络变化的时候,在AndroidManifest.xml中加入<user-permission android:name="android.permission.A ...

  4. Android 监听网络变化

    Android 监听网络变化

  5. Android Back Home键监听

    Android Back Home键监听 Back键的监听 对于Back键的监听比较容易,可以在多个系统回调处拦截,比如在activity的下列方法中都可以收到Back键按下的事件: @Overrid ...

  6. vue.js之过滤器,自定义指令,自定义键盘信息以及监听数据变化

    一.监听数据变化 1.监听数据变化有两种,深度和浅度,形式如下: vm.$watch(name,fnCb); //浅度 vm.$watch(name,fnCb,{deep:true}); //深度监视 ...

  7. 对于单页应用中如何监听 URL 变化的思考

    周末开发了一个在 GitHub 中给 repo 增加自定义备注的 chrome 扩展. 开发这个扩展的原因是我在 GitHub 中所 star 的项目实在太多了(截止目前 671 个),有的项目过个几 ...

  8. node.js监听文件变化

    前言 随着前端技术的飞速发展,前端开发也从原始的刀耕火种,向着工程化效率化的方向发展.在各种开发框架之外,打包编译等技术也是层出不穷,开发体验也是越来越好.例如HMR,让我们的更新可以即时可见,告别了 ...

  9. mvc 缓存 sqlCacheDependency 监听数据变化

    mvc 缓存   对于MVC有Control缓存和Action缓存. 一.Control缓存 Control缓存即是把缓存应用到整个Control上,该Control下的所有Action都会被缓存起来 ...

随机推荐

  1. 设置sqlplus的autotrace

    1.cd D:\Oracle11gR2\product\11.2.0\dbhome_1\rdbms\admin; --[ORACLE_HOME]/rdbms/admin 2.sqlplus syste ...

  2. iOS中使用UIWebView与JS进行交互

    iOS中使用UIWebView与JS进行交互 前一段忙着面试和复习,这两天终于考完试了,下学期的实习也有了着落,把最近学的东西更新一下,首先是使用UIWebView与JS进行交互 在webView中我 ...

  3. JavaScript--数组--关联(hash)数组

    关联(hash)数组的原理: hash算法: 接收一个字符串,计算出一个尽量不重复的序号 不同的字符串,计算出的序号尽量不同 相同的字符串,计算出的序号一定是相同 存入数据时: 将自定义下标名称交给h ...

  4. 文件操作1-php

    is_file (PHP 3, PHP 4, PHP 5) is_file -- 判断给定文件名是否为一个正常的文件 说明 bool is_file ( string filename ) 如果文件存 ...

  5. @Index用法——javax.persistence.Index

    package com.springup.utiku.model; import java.io.Serializable; import javax.persistence.Entity; impo ...

  6. Oracle Pl/SQL编程基础

    Pl/SQL简介 提高应用程序的运行性能, 提供模块化的程序设计, 自定义标示符, 具有过程语言控制结构, 良好的兼容性, 处理运行错误. Pl/SQL语言基础 sql是关系数据库的基本操作语言. s ...

  7. canvas 背景填充

    这儿介绍canvas的ccreatePattern函数, context.createPattern(Image,"repeat"),还可以repeat-x,reapter-y 还 ...

  8. [转载]如何查看某个查询使用了多少TempDB空间

    http://www.cnblogs.com/CareySon/p/3910337.html 通过下面脚本可以查看某个查询实用的TempDB的空间. 第一步是查询出当下TempDB实用空间是多少, 第 ...

  9. MVC中的区域

    authour: chenboyi updatetime: 2015-05-03 08:26:30 friendly link:   目录: 1,思维导图 2,AreaRegistration类的Re ...

  10. PS微观效果

    贴入命令必须在建立选区的情况下,然后设置图层的混合模式为“叠加”,这个是必须的. 专业相机的移轴镜头效果很好……PS搞出的不行 原素材如下(去云台山时照的): 打开渐变工具,在快速蒙版模式下选人,然后 ...