我是android guys.So的初学者,我需要你的帮助,我创建了一个android服务,我想在设备开机或仅在我的服务被激活的情况下重新启动该服务。如果我的服务被停用,它不应该在设备开机或重新启动设备时启动。请帮帮忙谢谢
发布于 2018-03-07 03:22:53
要重新启动您的服务,您可以使用操作android.intent.action.BOOT_COMPLETED创建一个BrodcastReciever,并在其中简单地启动您的服务。您可以使用SharedPreferences保存服务是否在关闭时运行。
发布于 2018-03-07 03:30:54
首先,您需要一种方法来指示服务是否已激活。在这种情况下,我将使用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>https://stackoverflow.com/questions/49138217
复制相似问题