2019独角兽企业重金招聘Python工程师标准>>>

---------------------------------------------------------------------------

转载:http://blog.csdn.net/arui319

---------------------------------------------------------------------------

如何做到开机启动?

只要实现一个BroadcastReceiver,监听手机启动完成的事件ACTION_BOOT_COMPLETED即可。需要注意的是,好像不能用模拟器,要用手机测试。

那如何做到启动一个Service,并且在用户关闭后能自动又启动了呢?

一般的,都会在上面说到的BroadcastReceiver的实现里面,监听手机启动完成后,启动一个Service,这是一般的做法。问题是,用户可以关闭掉该Service。那么怎样才能使它被关闭掉以后,再次启动呢?聪明的你一定立即就想到了,如果不直接启动Service,而是启动一个timmer,或者alarmManager,然后每隔一段时间去启动Service,就可以了。

[java] view plaincopyprint?

  1. package com.arui.framework.android.daemonservice;

  2. import android.app.AlarmManager;

  3. import android.app.PendingIntent;

  4. import android.content.BroadcastReceiver;

  5. import android.content.Context;

  6. import android.content.Intent;

  7. import android.os.SystemClock;

  8. public class BootBroadcast extends BroadcastReceiver {

  9. @Override

  10. public void onReceive(Context context, Intent mintent) {

  11. if (Intent.ACTION_BOOT_COMPLETED.equals(mintent.getAction())) {

  12. // 启动完成

  13. Intent intent = new Intent(context, Alarmreceiver.class);

  14. intent.setAction("arui.alarm.action");

  15. PendingIntent sender = PendingIntent.getBroadcast(context, 0,

  16. intent, 0);

  17. long firstime = SystemClock.elapsedRealtime();

  18. AlarmManager am = (AlarmManager) context

  19. .getSystemService(Context.ALARM_SERVICE);

  20. // 10秒一个周期,不停的发送广播

  21. am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstime,

  22. 10 * 1000, sender);

  23. }

  24. }

  25. }

[java] view plaincopyprint?

  1. package com.arui.framework.android.daemonservice;

  2. import android.content.BroadcastReceiver;

  3. import android.content.Context;

  4. import android.content.Intent;

  5. public class Alarmreceiver extends BroadcastReceiver {

  6. @Override

  7. public void onReceive(Context context, Intent intent) {

  8. if (intent.getAction().equals("arui.alarm.action")) {

  9. Intent i = new Intent();

  10. i.setClass(context, DaemonService.class);

  11. // 启动service

  12. // 多次调用startService并不会启动多个service 而是会多次调用onStart

  13. context.startService(i);

  14. }

  15. }

  16. }

[java] view plaincopyprint?

  1. package com.arui.framework.android.daemonservice;

  2. import android.app.Service;

  3. import android.content.Intent;

  4. import android.os.IBinder;

  5. import android.util.Log;

  6. public class DaemonService extends Service {

  7. @Override

  8. public IBinder onBind(Intent intent) {

  9. return null;

  10. }

  11. @Override

  12. public void onCreate() {

  13. super.onCreate();

  14. Log.v("=========", "***** DaemonService *****: onCreate");

  15. }

  16. @Override

  17. public void onStart(Intent intent, int startId) {

  18. Log.v("=========", "***** DaemonService *****: onStart");

  19. // 这里可以做Service该做的事

  20. }

  21. }

[java] view plaincopyprint?

  1. <receiver

  2. android:name=" com.arui.framework.android.daemonservice.BootBroadcast"

  3. android:permission="android.permission.RECEIVE_BOOT_COMPLETED">

  4. <intent-filter>

  5. <action android:name="android.intent.action.BOOT_COMPLETED" />

  6. </intent-filter>

  7. </receiver>

  8. <receiver

  9. android:name=" com.arui.framework.android.daemonservice.Alarmreceiver" >

  10. <intent-filter>

  11. <action android:name="arui.alarm.action" />

  12. </intent-filter>

  13. </receiver>

  14. <service

  15. android:name=" com.arui.framework.android.daemonservice.DaemonService" >

  16. </service>

转载于:https://my.oschina.net/u/1777508/blog/308505

Android中让Service被关闭后再重新启动相关推荐

  1. Android 中的 Service 全面总结(转)

    转自:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html# Android 中的 Service 全面总结 1.Service的种 ...

  2. android 应用自动重启,Android:如何在“强制关闭”后自动重启应用程序?

    Android:如何在"强制关闭"后自动重启应用程序? 在Android应用程序中,如果我们没有得到正确的例外,我们通常会收到"强制关闭"错误. 如果强行关闭, ...

  3. Android中如何做到Service被关闭后又自动启动

    转载:GL(arui319)http://blog.csdn.net/arui319 http://blog.csdn.net/arui319/article/details/7040980 那如何做 ...

  4. Android中的service全面总结

    文章出处:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html 1.Service的种类 按运行地点分类: 类别 区别  优点 缺点 ...

  5. Android 中的 Service 全面总结

    1.Service的种类   按运行地点分类: 类别 区别 优点 缺点 应用 本地服务(Local) 该服务依附在主进程上, 服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Loc ...

  6. 【转】Android 中的 Service 全面总结

    1.Service的种类   按运行地点分类: 类别 区别  优点 缺点   应用 本地服务(Local) 该服务依附在主进程上,  服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另 ...

  7. Android入门第41天-Android中的Service(bindService)

    介绍 在前一天我们介绍了Android中有两种启动Service的方法.并擅述了startService和bindService的区别.同时我们着重讲了startService. 因此今天我们就来讲b ...

  8. android服务中定时清理,Android中(Service )服务的最佳实践——后台执行的定时任务...

    Android中的定时任务一般有两种实现方式,一种是使用Java API里提供的Timer类,一种是使用Android的Alarm机制.这两种方式在多数情况下都能实现类似的效果,但Timer有一个明显 ...

  9. Android中的Service组件详解

    Service与Activity的区别在于:Service一直在后台运行,他没有用户界面,绝不会到前台来. 一,创建和配置Service 开发Service需要两个步骤:1,继承Service子类,2 ...

最新文章

  1. java set 包含_Java Set.contains()方法:判断Set集合是否包含指定的对象
  2. Signalr2_消息弹窗
  3. nutch,hbase,zookeeper兼容性问题
  4. MySQL字符串类型
  5. Reporting Services Internal Error(诡异的问题)-【转载】
  6. jquery学习笔记之选择器
  7. 用HackRF One模拟GPS信号
  8. SLAM中位姿估计的图优化方法比较
  9. win10鼎信诺为什么安装不了_两个方法教你彻底解决win10系统更新补丁安装失败的问题-系统操作与应用 -亦是美网络...
  10. mysql多表join方式
  11. 达人篇:3.1.3)FAI 首件检验
  12. tilemap 菱形_带高度的isometric tile map 斜45度 2d 地图制作
  13. android rom 制作工具,ROM工具箱(ROM Toolbox Pro)
  14. 岛用海水淡化设备拯救日常用水难
  15. 应用程序图标变成白色
  16. SQL语句之单行函数
  17. Linux中malloc与kmalloc
  18. Arcgis影像镶嵌数据集色彩平衡遇到的问题
  19. 51 地图基本接口(二)
  20. 房贷利息怎么算, 千万别被砖家叫兽误导

热门文章

  1. ffmpeg检测文件是否损坏_教你一招如何检测硬盘,让你知道硬盘是否有损坏?还有几天寿命?...
  2. win10必须禁用的服务_7寸屏的迷你电脑,就算是8GB运行内存,也必须关闭的系统选项...
  3. stm32驱动ssd1306配置_STM32 OLED 屏幕 驱动芯片SSD1306 IIC代码
  4. java 设计作业——简单计算器
  5. uva 10061——How many zero\'s and how many digits ?
  6. 201301 JAVA2~3级---走格子
  7. CodeForces - 1141CPolycarp Restores Permutation搜索+剪枝
  8. 【C language】动态数组的创建和使用
  9. Java开发环境!我总结了所有面试题
  10. HTML实体字符列表,总结到位