在开机或重启设备时启动Android服务[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在开机或重启设备时启动Android服务[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我是android的初学者。所以,我需要你的帮助,我创建了一个Android服务,我想在设备启动时重新启动该服务,或者仅在我的服务被激活的情况下重新启动。如果我的服务被停用,则不应在启动或重启设备的设备上启动。请帮忙谢谢

答案

要重新启动您的服务,您可以创建一个带有android.intent.action.BOOT_COMPLETED操作的BrodcastReciever并在其中,只需启动您的服务即可。如果服务在关闭时运行,您可以使用SharedPreferences进行保存。

另一答案

首先,您需要一种方法来指示服务是否已激活。在这种情况下,我会使用SharedPreference,即使在应用程序关闭,设备重新启动等后也会持久存储,你可以这样做:

public void setServiceActivated(boolean activated) {
    SharedPreferences sharedPreferences = context.getSharedPreferences("servicePrefs", Context.MODE_PRIVATE);
    SharedPreferences.Editor prefEditor = sharedPreferences.edit();
    prefEditor.putBoolean("serviceActivated", activated);
    prefEditor.apply();
}

然后,创建一个BroadcastReceiver,它将在设备启动过程完成时运行,并在启动时启动服务:

public class AutoStart extends BroadcastReceiver {

    // Method is called after device bootup is complete
    public void onReceive(final Context context, Intent arg1) {
        SharedPreferences sharedPreferences = context.getSharedPreferences("servicePrefs", Context.MODE_PRIVATE);
        boolean serviceActivated = sharedPreferences.getBoolean("serviceActivated", false);

        if (serviceActivated) {
            // Start service here
        }
    }

}

最后,在清单中注册BroadcastReceiver

<application
    android:allowBackup="true"
    android:largeHeap="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <!-- Launches your service on device boot-up -->
    <receiver android:name=".AutoStart">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

</application>

以上是关于在开机或重启设备时启动Android服务[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥电脑windowsXP启动界面后又重复启动

Android App 开机自启动

android webview或浏览器不会在设备重启时删除会话cookie

android设备重启时ImageView不保留图像

adb设置开机自启动

Android开机动画