应用程序被杀时未调用BroadcastReceiver

时间:2018-04-07 19:43:21

标签: java android broadcastreceiver alarmmanager

当应用程序被刷掉时,我的BroadcastReceiver没有被调用。当它在前景/背景中时,它工作正常。 我试图创建一个闹钟。 这是警报代码:

    AlarmManager alarmManager = (AlarmManager) 
    context.getSystemService(Context.ALARM_SERVICE);

    Intent myIntent = new Intent(context, AlarmBCReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 
                   0, myIntent,  PendingIntent.FLAG_UPDATE_CURRENT);
    alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (10*1000),  pendingIntent);
    Toast.makeText(context, "Alarm set", Toast.LENGTH_SHORT).show();

接收者类的onReceive方法:

    Log.i("BCReceiver", "Received");
    Intent startIntent = context
            .getPackageManager()
            .getLaunchIntentForPackage(context.getPackageName());
    startIntent.setAction(Intent.ACTION_MAIN);
    startIntent.setFlags(
            Intent.FLAG_ACTIVITY_REORDER_TO_FRONT |
                    Intent.FLAG_ACTIVITY_NEW_TASK |
                    Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
    );
    context.startActivity(startIntent);

最后是清单文件:

<receiver
        android:name=".AlarmBCReceiver"
        android:enabled="true"
        android:exported="true" />

<activity
        android:name=".MainScreenActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

我想要完成的是在onReceive()时重启应用程序,即使应用程序被杀死了。 我已经读到这应该有效,而且我不明白它为什么没有。

如果应用程序被杀死,记录器什么都不显示,所以我认为根本没有调用onReceive方法。请注意,我在真实设备上进行测试(小米Redmi 4x)。 该应用程序是用AndroidStudio编写的。

 minSdkVersion 23
 targetSdkVersion 27

0 个答案:

没有答案