繁体   English   中英

使用 BroadCastReceiver 重新启动后应用服务不会启动

[英]App Service won't Start after reboot by using BroadCastReceiver

我希望在 android 重新启动时启动我的服务。 我使用 BroadcastReceiver 这样做。

public class autostart extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    MyService1 mYourService = new MyService1();
    MainActivity.instance_main.showToast("BroadCast Received...................");
    Intent mServiceIntent = new Intent(MainActivity.instance_main, mYourService.getClass());
    if (!MainActivity.instance_main.isMyServiceRunning(mYourService.getClass())) {
        MainActivity.instance_main.startService(mServiceIntent);
        MainActivity.instance_main.showToast("Restarted...................");
    }
    else {
        MainActivity.instance_main.showToast("already running..................");
    }
  }
}

Android 清单中的接收器

<receiver android:name=".autostart" android:enabled="true" android:exported="true">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
    <category android:name="android.intent.category.DEFAULT"/>
  </intent-filter>
</receiver>

定义的权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>

OnCreate() 中还请求了电池优化忽略权限

Intent intent=new Intent();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:"+MainActivity.instance_main.getPackageName()));
MainActivity.instance_main.startActivity(intent);

但它不会起作用。 服务不会在重新启动时启动。 请建议我解决方案。

我们需要注册接收器。 将以下代码添加到 OnCreate()

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    BroadcastReceiver mService=new Autostart();
    registerReceiver(mService,filter);

但是重新启动后它不会自动命中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM