Android中让Service被关闭后再重新启动
2019独角兽企业重金招聘Python工程师标准>>>
---------------------------------------------------------------------------
转载:http://blog.csdn.net/arui319
---------------------------------------------------------------------------
如何做到开机启动?
只要实现一个BroadcastReceiver,监听手机启动完成的事件ACTION_BOOT_COMPLETED即可。需要注意的是,好像不能用模拟器,要用手机测试。
那如何做到启动一个Service,并且在用户关闭后能自动又启动了呢?
一般的,都会在上面说到的BroadcastReceiver的实现里面,监听手机启动完成后,启动一个Service,这是一般的做法。问题是,用户可以关闭掉该Service。那么怎样才能使它被关闭掉以后,再次启动呢?聪明的你一定立即就想到了,如果不直接启动Service,而是启动一个timmer,或者alarmManager,然后每隔一段时间去启动Service,就可以了。
[java] view plaincopyprint?
package com.arui.framework.android.daemonservice;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.SystemClock;
public class BootBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent mintent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(mintent.getAction())) {
// 启动完成
Intent intent = new Intent(context, Alarmreceiver.class);
intent.setAction("arui.alarm.action");
PendingIntent sender = PendingIntent.getBroadcast(context, 0,
intent, 0);
long firstime = SystemClock.elapsedRealtime();
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
// 10秒一个周期,不停的发送广播
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstime,
10 * 1000, sender);
}
}
}
[java] view plaincopyprint?
package com.arui.framework.android.daemonservice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class Alarmreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("arui.alarm.action")) {
Intent i = new Intent();
i.setClass(context, DaemonService.class);
// 启动service
// 多次调用startService并不会启动多个service 而是会多次调用onStart
context.startService(i);
}
}
}
[java] view plaincopyprint?
package com.arui.framework.android.daemonservice;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class DaemonService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Log.v("=========", "***** DaemonService *****: onCreate");
}
@Override
public void onStart(Intent intent, int startId) {
Log.v("=========", "***** DaemonService *****: onStart");
// 这里可以做Service该做的事
}
}
[java] view plaincopyprint?
<receiver
android:name=" com.arui.framework.android.daemonservice.BootBroadcast"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver
android:name=" com.arui.framework.android.daemonservice.Alarmreceiver" >
<intent-filter>
<action android:name="arui.alarm.action" />
</intent-filter>
</receiver>
<service
android:name=" com.arui.framework.android.daemonservice.DaemonService" >
</service>
转载于:https://my.oschina.net/u/1777508/blog/308505
Android中让Service被关闭后再重新启动相关推荐
- Android 中的 Service 全面总结(转)
转自:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html# Android 中的 Service 全面总结 1.Service的种 ...
- android 应用自动重启,Android:如何在“强制关闭”后自动重启应用程序?
Android:如何在"强制关闭"后自动重启应用程序? 在Android应用程序中,如果我们没有得到正确的例外,我们通常会收到"强制关闭"错误. 如果强行关闭, ...
- Android中如何做到Service被关闭后又自动启动
转载:GL(arui319)http://blog.csdn.net/arui319 http://blog.csdn.net/arui319/article/details/7040980 那如何做 ...
- Android中的service全面总结
文章出处:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html 1.Service的种类 按运行地点分类: 类别 区别 优点 缺点 ...
- Android 中的 Service 全面总结
1.Service的种类 按运行地点分类: 类别 区别 优点 缺点 应用 本地服务(Local) 该服务依附在主进程上, 服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Loc ...
- 【转】Android 中的 Service 全面总结
1.Service的种类 按运行地点分类: 类别 区别 优点 缺点 应用 本地服务(Local) 该服务依附在主进程上, 服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另 ...
- Android入门第41天-Android中的Service(bindService)
介绍 在前一天我们介绍了Android中有两种启动Service的方法.并擅述了startService和bindService的区别.同时我们着重讲了startService. 因此今天我们就来讲b ...
- android服务中定时清理,Android中(Service )服务的最佳实践——后台执行的定时任务...
Android中的定时任务一般有两种实现方式,一种是使用Java API里提供的Timer类,一种是使用Android的Alarm机制.这两种方式在多数情况下都能实现类似的效果,但Timer有一个明显 ...
- Android中的Service组件详解
Service与Activity的区别在于:Service一直在后台运行,他没有用户界面,绝不会到前台来. 一,创建和配置Service 开发Service需要两个步骤:1,继承Service子类,2 ...
最新文章
- java set 包含_Java Set.contains()方法:判断Set集合是否包含指定的对象
- Signalr2_消息弹窗
- nutch,hbase,zookeeper兼容性问题
- MySQL字符串类型
- Reporting Services Internal Error(诡异的问题)-【转载】
- jquery学习笔记之选择器
- 用HackRF One模拟GPS信号
- SLAM中位姿估计的图优化方法比较
- win10鼎信诺为什么安装不了_两个方法教你彻底解决win10系统更新补丁安装失败的问题-系统操作与应用
-亦是美网络...
- mysql多表join方式
- 达人篇:3.1.3)FAI 首件检验
- tilemap 菱形_带高度的isometric tile map 斜45度 2d 地图制作
- android rom 制作工具,ROM工具箱(ROM Toolbox Pro)
- 岛用海水淡化设备拯救日常用水难
- 应用程序图标变成白色
- SQL语句之单行函数
- Linux中malloc与kmalloc
- Arcgis影像镶嵌数据集色彩平衡遇到的问题
- 51 地图基本接口(二)
- 房贷利息怎么算, 千万别被砖家叫兽误导
热门文章
- ffmpeg检测文件是否损坏_教你一招如何检测硬盘,让你知道硬盘是否有损坏?还有几天寿命?...
- win10必须禁用的服务_7寸屏的迷你电脑,就算是8GB运行内存,也必须关闭的系统选项...
- stm32驱动ssd1306配置_STM32 OLED 屏幕 驱动芯片SSD1306 IIC代码
- java 设计作业——简单计算器
- uva 10061——How many zero\'s and how many digits ?
- 201301 JAVA2~3级---走格子
- CodeForces - 1141CPolycarp Restores Permutation搜索+剪枝
- 【C language】动态数组的创建和使用
- Java开发环境!我总结了所有面试题
- HTML实体字符列表,总结到位