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

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

 

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

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);
        }  

    }
}  

具体看这个:

http://blog.csdn.net/arui319/article/details/7040980

时间: 2024-08-22 14:10:54

Android中如何做到Service被关闭后又自动启动的相关文章

解析Android中如何做到Service被关闭后又自动启动的实现方法_Android

首先要说的是,用户可能把这种做法视为流氓软件.大部分时候,程序员也不想把软件做成流氓软件,没办法,领导说了算. 我们在使用某些Android应用的时候,可能会发现安装了某应用以后,会有一些服务也会随之运行.而且,这些服务每次都会随着手机开机而启动.有的服务做的更绝,当用户在运行的服务中手动停止该服务以后,过了一段时间,服务又自动运行了.虽然,从用户的角度来说,这种方式比较流氓.但是,从程序员的角度来说,这是如何做到的呢?经过研究,我发现有一种方式是可以实现的.下面就和大家分享. 先简单介绍,一会

Android菜鸟的成长笔记(17)—— 再看Android中的Unbounded Service

原文:Android菜鸟的成长笔记(17)-- 再看Android中的Unbounded Service 前面已经写过关于startService(Unbounded Service)的一篇文章:<Android菜鸟的成长笔记(16)--Service简介>本篇将在这一篇的基础上再来看一下startService的用法.先看一段代码: TestService.java package com.example.myfirstapp; import android.app.Service; imp

Android中关于百度糯米app关闭网页或窗口的方法(99%人不知)_Android

我们公司做了一款使用百度钱包的移动网页支付进行支付的产品,用户通过百度钱包.百度糯米扫描我们 产品的二维码,选择商品,点击支付将会自动调用百度钱包进行支付,支付成功后返回成功页面,在我们的成功页面有关闭 网页按钮,点击关闭按钮或者返回按钮将会关闭页面. 在百度钱包中使用百度轻应用的BLightApp.closeWindow() 方法可以关闭,但是在百度糯米中,按道理可以使用呀, 但是根本就不行,改成传统的window.close()也不行.当时我们在网上搜索和百度糯米的官网中,都没找到解决方法.

Android中EditText点击获得焦点后无法显示输入法键盘

[背景] android中EditText的Enable已经设置为True了,表示可以被编辑, 但是点击输入框,获得焦点后,无法显示输入法,导致无法输入内容. 比如: Descriptor的值是EditText 之前已经设置为可编辑了: ? 1 2 EditText variableValueView = (EditText) variableLayout.findViewById(R.id.variableValue); variableValueView.setEnabled(true);

MyEclipse中package explorer过滤掉关闭后的项目

一.基本概念一个工作目录下会有很多项目,在开发一个项目的时候,最好把其余项目都关闭,否则IDE有时会出错.但关闭后的项目仍然显示在视图中,给开发带来些许的不便.MyEclpise中提供了过滤方法,可以设定条件显示或者不显示某些项目.   二.操作步骤1 点击package explorer视图中向下的箭头 2 进入Filters选项卡 3 选择Closed Projects,这样被关闭的项目就不会显示在packege explorer中了.   三.总结Filters中也有很多其他的过来条件,可

Android中Textview超链接实现方式_Android

TextView中的超链接可以通过几种方式实现:一.Html.fromHtml方式 TextView,本身就支持部分的Html格式标签.这其中包括常用的字体大小颜色设置,文本链接等.使用起来也比较方便,只需要使用Html类转换一下即可: textView.setText(Html.fromHtml(str)); 代码如下: public class Test10Activity extends Activity { TextView textView ; @Override protected

Android实现从本地图库/相机拍照后裁剪图片并设置头像_Android

先给大家展示效果图: 代码部分: 布局代码(其实就是两个按钮和一个ImageView来显示头像) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="v

Android实现从本地图库/相机拍照后裁剪图片并设置头像

玩qq或者是微信的盆友都知道,这些聊天工具里都要设置头像,一般情况下大家的解决办法是从本地图库选择图片或是从相机拍照,然后根据自己的喜爱截取图片.上述过程已经实现好了,最后一步我加上了把截取好的图片在保存到本地的操作,来保存头像.为了大家需要,下面脚本之家小编把完整的代码贴出来供大家参考. 先给大家展示效果图: 代码部分: 布局代码(其实就是两个按钮和一个ImageView来显示头像) <LinearLayout xmlns:android="http://schemas.android.

Asynchronous task 不能在 android 中取消

问题描述 Asynchronous task 不能在 android 中取消 在 async task开启后,在按钮点击事件中调用 asynctask.cancel(true).但是当我在运行的后台中检查取消了的值事,使用了响应的条件句,如下: while(myProgress<phnno.size()){ if (isCancelled()) { break; }else{ myProgress++; publishProgress(); SystemClock.sleep(100); } }