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

须知少年凌云志,曾许人间第一流。这篇文章主要讲述在开机或重启设备时启动Android服务[重复]相关的知识,希望能为你提供帮助。
这个问题在这里已有答案:

  • Android -Starting Service at Boot Time 8个答案
我是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 } }}

【在开机或重启设备时启动Android服务[重复]】最后,在清单中注册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>


    推荐阅读