开机启动服务的关键点是,当android启动完毕后,android会广播一次android.intent.action.BOOT_COMPLETED。如果想在启动后执行自己的代码,需要编写一个广播的接收者,并且注册接收者到这个广播intent上。
这里以android中使用定时任务代码为例,将它的服务改为开机启动。
首先,需要编写一个intent的receiver,比如SmsServiceBootReceiver:
package com.easymorse;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class SmsServiceBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent myIntent = new Intent();
myIntent.setAction(“com.easymorse.SmsService”);
context.startService(myIntent);
}
}
通过这个Receiver,启动SmsService。那么怎么让这个Receiver工作呢,需要把它注册到android系统上,去监听广播的BOOT_COMPLETED intent。在AndroidManifest.xml中:
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.easymorse” android:versionCode=”1″ android:versionName=”1.0″>
<application android:icon=”@drawable/icon” android:label=”@string/app_name”>
<activity android:name=”.SmsServiceOptions” android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<service android:name=”.SmsService”>
<intent-filter>
<action android:name=”com.easymorse.SmsService”></action>
</intent-filter>
</service>
<receiver android:name=”SmsServiceBootReceiver”>
<intent-filter>
<action android:name=”android.intent.action.BOOT_COMPLETED”></action>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion=”3″ />
</manifest>
增加黑体字部分的内容即可。
这样重新开机,服务在开机android系统启动完毕后就会加载。再启动Activity绑定(binding)服务,就可以操作SmsService服务,如果Activity解除绑定,也不会shutdown服务了。
是不是Service会有一个引用计数呢?当计数是0的时候就会shutdown。还要再找时间研究。
源代码见:
http://easymorse.googlecode.com/svn/tags/android.service.start.after.b
分享到:
相关推荐
android 实现开机自启动和后台运行 要求版本最低为2.1
android开机启动服务代码。开机启动进行android录音。实现android的后台录音。
可以实现手机开机重启的时候自启动,程序简单易懂,有注释,是利用广播实现的
实现android开机自启动,用广播实现自启动
Android 实现开机启动~~~~~~~~~~~~~~
delphi ex10 android 实现开机自启动.rar
还是做成一个 apk 吧,暂定只写一个 service 并开机自动启用,无 activity 的。 Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pthread_create 创建个线程跑原来的 main 就行啦。 ...
Android应用程序可以实现开机时启动相关应用 如service等 Android系统在开机启动时会发出一个系统广播"android intent action BOOT COMPLETED" 在接收到这个广播就可以实现开机自启动功能 下面就是一个...
本文实例讲述了Android实现开机自动启动Service或app的方法。分享给大家供大家参考,具体如下: 第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动...
开机启动后,当系统发出android.intent.action.BOOT_COMPLETED广播时,接收该广播,并自动启动一个后台service。
Android开机自启动Demo 相关文章:http://blog.csdn.net/etzmico/article/details/6848465
android开机自动运行APP实现方式其实很简单。在android系统运行时,会发出“android.intent.action.BOOT_COMPLETED”这个系统广播,因此我们监听它,并进行打开APP的操作即可。现在大多数的android手机系统都默认...
该程序基于android平台可以实现开机自动启动录音 并且将录音存储在当前存储目录下
实现Android 开机自启动程序,BroadCastReceiver
在Android平台上实现应用的自启动功能。部分山寨机修改系统,可能会出现问题,
app开机启动,很好用,希望对初学者有帮助
Android 平移动画+缩放动画->实现开机启动页: 1、通过集合动画+线程实现开机启动动画界面。 2、设置了休眠时间,休眠过后实现跳转MainActivity。 3、动画集合中主要有平移动画+缩放动画。 4、...
开机启动一个一个Activity,并发出一个通知