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. My.Ioc 的性能

    IoC/DI 这个概念,最初是由 Martin Fowler 提出来的.之后,很快在 Java 社区大行其道.在 .net 社区,IoC 的流行要比 Java 晚一些.尽管如此,现在开源社区中也已经出 ...

  2. jQuery ajax - serialize() 方法

    http://www.jb51.net/article/60849.htm http://www.w3school.com.cn/jquery/ajax_serialize.asp

  3. Css四种样式

    1. 2 3 4 5 6.

  4. Linux下登陆mysql服务器不需要输入账号密码信息

    linux下登录mysql服务器一般都是在命令行手动输入链接信息 [root@localhost ~]# mysql -hlocalhost -uroot -p11111 而在mysql 5.6之后版 ...

  5. 重新开始学习javase_隐藏实施过程

    一.隐藏实施过程 对于隐藏实施过程,thinking in java中讲了很好,无非就是一个好的程序尽量做到,对外公开的程序,即使内部程序发生变动,也不会影响这些公开的服务的使用 类的导入java中的 ...

  6. IDEA中添加各种依赖pom.xml文件内容

    刚实习的小白,今天准备进入项目,纳尼,前辈把框架什么的都搭建好了,默默的抹了一把辛酸泪,刚刚接触自学框架的时候,添加依赖的时候总是各种问题,让前辈发给我之后,才发现人家写的代码相当优美了.下面就是前辈 ...

  7. java学习——IO流

    字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表.获取对应的文字.在对这个文字进行操作.简单说:字节流+编码表 ---------------------------- ...

  8. hdu 3371 Connect the Cities (最小生成树Prim)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3371 题目不难 稍微注意一下 要把已经建好的城市之间的花费定义为0,在用普通Prim算法就可以了:我没 ...

  9. ios 中获得应用程序名称和版本号

    IOS程序中的应用名称和版本号在 info.plist 文件中存储着,要想在程序中获得需要使用 NSBundle 对象 下面是示例代码: NSBundle *bundle = [NSBundle ma ...

  10. Thinkphp Ajax传地址

    在使用文本编辑器时,如果加入图片,涉及到图片的src,需要用到Ajax传地址到处理页面. 在使用Ajax的过程中,如果要通过JSON传递路径值到处理页面,会出现传值不正确. 解决方法就是在传值之前将路 ...