- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我创建了一个简单的警报应用程序,我有两个 broadcast receivers
注册于AndroidManifest.xml
(一个用于接收警报,另一个用于在设备启动时重新安排警报)。安排一些警报后,我重新启动我的设备和我的 "OnBoot" receiver
很好地重新安排警报,但第一个接收器没有收到它们。如果我启动我的应用程序,安排一些警报并且不会关闭它,接收器将正常工作,但如果我关闭(不是强制停止)应用程序或通过按 home button
将其发送到后台,接收器永远不会收到警报!我在几台设备(HTC、魅族、三星)上进行了测试,并遇到了同样的问题。我发现让接收器正常工作的唯一方法是杀死应用程序,因为在我再次启动它后,即使应用程序关闭,接收器也能正常工作,但是当我再次重新启动设备后,我会遇到同样的问题。请问有人可以帮我吗?我需要做什么才能摆脱这个问题?
我尝试了几乎所有方法(更改 pendingintent flags
和 request
代码、远程 running receivers
中的 processes
、设置 intent-filters
、 extend
从 WakefulBroadcastReceiver
等等),但没有任何帮助我。
AndroidManifest.xml 中的接收器
<receiver
android:name="com.gd.aiwnext.deal.Receivers.NotificationsReceiver"
android:enabled="true"
android:exported="true"
android:process=":nr">
<intent-filter>
<action android:name="com.gd.action.intent.bri"></action>
</intent-filter>
</receiver>
<receiver
android:name="com.gd.aiwnext.deal.Receivers.NotificationBootReceiver"
android:process=":nbr">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
广播接收器
public class NotificationsReceiver extends WakefulBroadcastReceiver {
SQLiteDatabase NoteDataBase;
NotesDataBase notesDataBase;
String OLDDATE, NEWDATE, INTPICKER, OLDTIME, NEWTIME;
String NewYear, NewMonth, NewDay, NewHour, NewMinute;
long CurrentTimeInMillis, FutureTimeInMillis;
Boolean StartAfterSleep;
String FinalHour = "", FinalMinute = "", FinalYear = "", FinalMonth = "", FinalDay = "";
boolean isDivided = false;
@Override
public void onReceive(Context context, Intent intent) {
Log.d("BLL","Simple");
int id = intent.getIntExtra("id", 1);
String note = intent.getStringExtra("note");
String interval = intent.getStringExtra("interval");
OLDDATE = intent.getStringExtra("date");
OLDTIME = intent.getStringExtra("time");
INTPICKER = intent.getStringExtra("intpicker");
CurrentTimeInMillis = intent.getLongExtra("timeinmillis", 0);
if (intent.hasExtra("startaftersleep")) {
StartAfterSleep = (intent.getBooleanExtra("startaftersleep", false));
} else {
StartAfterSleep = false;
}
CreateNotification(id, note, interval, context);
}
我使用 CreateNotification() 方法发送通知并使用数据库来更新警报的时间和日期。
创建闹钟
Intent intent = new Intent("com.gd.action.intent.bri");
之后我添加了一些额外的内容,并且
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), IdCount, intent, PendingIntent.FLAG_ONE_SHOT);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, FutureTimeMillis, pendingIntent);
最佳答案
您应该应用默认类别
<category android:name="android.intent.category.DEFAULT" />
如果未指定类别,Android 会将此类别分配给每个 Intent 。
关于java - 应用程序上的广播接收器已关闭(或在后台),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37110674/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
所以我正在开发一个黑 jack 程序,但我有点卡住了。我会警告大家,我对编程真的很陌生,而且,我正在项目中期......所以有一些松散的结局和未使用的变量,以及一些不必要的逻辑(用于测试),但这就是我
我正在尝试创建一个可用作 OpenGL 测试工具的示例程序。到目前为止,我的那个似乎可以工作,但似乎忽略了通过统一变量 MVPMatrix 传递的 MVP 矩阵。当我添加代码以读回制服并检查它是否确实
感谢您帮助我,这是有关我的代码的部分。 printf("Thank you, now please enter the logic gate"); scanf("%s", &C); if (C ==
public static void ejemplosString(String palabra){ char[] letras = palabra.toCharArray();
所以,我有一个 php 应用程序,通过 cgi 和 nginx 运行。我有一个 .jar 程序,用于在条形码打印机(Zebra)上打印条形码,猜猜看是什么!。 我的 php 应用程序使用 exec()
我遇到的唯一问题是 getAll() 方法,它似乎在 PersonnelController 类中的位置立即运行。我也曾在其他很多地方尝试过,但都没有成功。 setAll() 方法看起来不错,我已经测
我是一名优秀的程序员,十分优秀!