`

android实现开机启动服务

阅读更多

开机启动服务的关键点是,当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实现开机自启动以及后台运行

    总结起来,要在Android上实现开机自启动和后台运行,你需要创建一个服务,一个广播接收器,并处理好权限问题。同时,考虑到Android系统的电源管理特性,你可能还需要采用适当的策略来保证服务在后台的持续运行。请...

    android应用开机自启动

    当我们的应用接收到这个广播时,就可以执行相应的操作,如启动服务或者启动主Activity,达到开机自启动的效果。 二、创建广播接收器 1. 首先,我们需要创建一个继承自BroadcastReceiver的类,例如命名为`...

    delphi ex10 android 实现开机自启动

    标题中的"Delphi EX10 Android 实现开机自启动"是指使用Embarcadero Delphi XE10(也称为 RAD Studio XE10)开发的Android应用程序,目的是使其能够在设备启动时自动运行。这个过程涉及到Android系统的权限管理和...

    【Android】开机自启动2

    4. **注意事项**: 自启动服务可能会消耗电池,因此在Android 8.0(API级别26)及以上版本,系统对后台服务进行了严格的限制。开发者需要考虑使用JobScheduler、WorkManager等工具来合理安排后台任务,以遵循电池优化...

    【Android】开机自启动

    二、实现开机自启动的步骤 1. 创建BroadcastReceiver: 首先,你需要创建一个继承自BroadcastReceiver的类,例如命名为AutoRunReceiver,并重写onReceive()方法。在这个方法中,你可以编写启动应用或服务的代码。 `...

    android 手机开机启动服务DEMO

    为了实现开机启动服务,BroadcastReceiver需要在`onReceive()`方法中启动Service。这通常通过调用`startService()`方法完成,传入Service的Intent来启动服务。Service启动后,会在后台执行其`onStartCommand()`方法...

    展锐Android11.0开机启动流程介绍V1.0-nowatermark

    Android 11.0 开机启动流程介绍 本文档对 Android 11.0 平台开机启动流程进行了详细的介绍,涵盖了 Android 架构图、系统启动流程、init 启动流程、Zygote 启动流程、System Server 启动流程等关键部分。 Android ...

    Android 开机自启动应用

    "BOOT_COMPLETED"是Android中一个重要的广播接收器事件,它标志着系统启动已经完成,可以安全地启动服务和执行其他资源密集型任务。 1. Android广播系统: Android系统采用广播机制来传播全局事件,如系统启动完成...

    android开机启动服务

    在Android系统中,开机启动服务(Boot Completed Service)是一种特殊的服务类型,它可以在设备完成启动后自动启动,以便执行特定的任务,例如后台录音。这里我们将深入探讨如何实现Android开机启动服务以及后台录音...

    Android实现开机自动启动Service或app的方法

    本文实例讲述了Android实现开机自动启动Service或app的方法。分享给大家供大家参考,具体如下: 第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动...

    android实现开机自启动

    以下将详细介绍如何利用Android的广播接收器实现开机自启动。 首先,我们需要理解什么是广播接收器(BroadcastReceiver)。在Android中,广播接收器是一种轻量级组件,它可以监听系统或应用发送的广播Intent,并在...

    Android 实现开机启动

    在Android系统中,实现应用的开机启动功能是开发者经常遇到的需求,这通常涉及到服务(Service)、广播接收器(BroadcastReceiver)以及系统权限的配置。下面将详细解释如何在Android中实现这一功能。 首先,我们...

    Android中实现开机自动启动服务(service)实例

    还是做成一个 apk 吧,暂定只写一个 service 并开机自动启用,无 activity 的。 Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pthread_create 创建个线程跑原来的 main 就行啦。 ...

    Android应用开机自动启动

    // 在这里执行你的启动操作,如启动服务或打开主界面 startService(context, YourService.class); } } private void startService(Context context, Class&lt;? extends Service&gt; serviceClass) { Intent ...

    实现开机自启动服务

    在Android系统中,实现开机自启动服务是一项常见的需求,它使得应用能够在用户开机后自动运行特定的任务,如数据同步、消息推送等。本篇将详细讲解如何创建并配置开机自启动服务。 首先,我们需要理解`android....

    Delphi下 Android 开机启动代码

    在Delphi环境下开发...这些文件共同构成了一个完整的Delphi Android应用项目,其中`Unit1.pas`和`Unit1.fmx`是实现开机启动的关键部分。通过以上步骤,你可以理解如何在Delphi环境中编写和实现Android开机启动功能。

    android应用程序开机启动

    Android应用程序可以实现开机时启动相关应用 如service等 Android系统在开机启动时会发出一个系统广播&quot;android intent action BOOT COMPLETED&quot; 在接收到这个广播就可以实现开机自启动功能 下面就是一个...

    android开机启动service

    - 需要考虑到电池效率和用户体验,避免无节制地使用开机启动服务,因为这可能会消耗大量资源。 - 从Android 8.0(API 级别26)开始,后台服务的启动受到限制,因此在这些版本上,你可能需要使用JobScheduler或...

Global site tag (gtag.js) - Google Analytics