android后台广播接收机

android后台广播接收机,android,broadcastreceiver,background-service,Android,Broadcastreceiver,Background Service,广播接收机是否在清单中静态定义的后台运行。有人能解释一下吗?另外,如何在api 26oreo和更高版本的后台运行broadcastreceiver <receiver android:name=".ScreenOnOffReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action a

广播接收机是否在清单中静态定义的后台运行。有人能解释一下吗?另外,如何在api 26oreo和更高版本的后台运行broadcastreceiver

<receiver android:name=".ScreenOnOffReceiver"
              android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <action android:name="myintent"/>
        </intent-filter>
    </receiver>

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}
}


谢谢。

随着android O Forward后台限制的实施,只有一些广播(如BOOT_COMPLETED等)才允许进行静态注册。当应用程序处于前台时,任何其他应用程序都应该动态注册/注销。
此处有更多信息-

是的,我查看了此页面,但当我在androidmanifes中实现BOOT_COMPLETED action时,后台没有收到。请将代码片段粘贴到此处,以了解代码中是否有错误?我已将其粘贴到上面,请确认您是否在清单中使用了权限,因为-接收者也被放置在正确的包中,我的意思是。ScreenOnOffReceiver应该匹配。这不起作用。我添加了RECEIVE\u BOOT\u COMPLETED权限。
public class ScreenOnOffReceiver extends BroadcastReceiver {

public final static String SCREEN_TOGGLE_TAG = "SCREEN_TOGGLE_TAG";

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    Log.d(SCREEN_TOGGLE_TAG, " action name : " + action);
}