当应用程序被刷掉时,我的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