有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在设备通电或重启时启动安卓服务

我是安卓系统的初学者。所以,我需要你的帮助,我创建了一个安卓服务,我想在设备通电时重新启动该服务,或者只在我的服务被激活的情况下重新启动。 如果我的服务被停用,它不应该在设备通电或重新启动设备时启动。 请帮忙 谢谢


共 (2) 个答案

  1. # 1 楼答案

    要重启你的服务,你可以创建一个带有动作android.intent.action.BOOT_COMPLETED的BrodCastrecIver,在它里面,只需启动你的服务。您可以使用SharedReferences来保存服务是否在关闭时运行

  2. # 2 楼答案

    首先,您需要一种方法来指示服务是否已激活。在这种情况下,我会使用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>