gpt4 book ai didi

安卓奥利奥 : Broadcast receiver does not work when application is not in memory

转载 作者:行者123 更新时间:2023-11-30 00:10:15 26 4
gpt4 key购买 nike

我有一个要求,我需要在一周内的特定时间向用户显示通知。

我尝试使用警报管理器来实现这一点。

我面临的问题是,当应用程序在内存中时,我的广播监听器的 onRecieve() 方法工作正常,但如果我终止应用程序(注意:不是强制停止,我只是从内存中删除应用程序) , onRecieve 方法没有被调用。

我可以从 logcat 中看到 alarmManager 正在发送正确的 Intent ,但由于某种原因我的应用程序似乎没有启动。

我已经梳理了所有可能的资源,但似乎都没有解决我的问题。

我的 list :

权限:

    <uses-permission android:name="android.permission.WAKE_LOCK">
</uses-permission>
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>

list 中的 Intent 接收器:

     <receiver android:name=".Alarm">
<intent-filter>
<action android:name="android.intent.action.NOTIFY" />
<action android:name="com.myApp.myCustomThing" />
</intent-filter>
</receiver>

我的广播接收器:

public class Alarm extends BroadcastReceiver
{
Context context;
@Override
public void onReceive(Context context, Intent intent)
{
Log.i("Info","Inside OnReceive");
this.context = context;
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();

Log.i("Info","Alarm called - showing toast");
// Put here YOUR code.
Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example

Log.i("Info","Trying to create notification");

wl.release();
}

public void setAlarm(Context context)
{
Log.i("Info","In Set Alarm");
AlarmManager am =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
i.setAction("com.myApp.myCustomThing");
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
// am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 1, pi); // Millisec * Second * Minute
am.set(AlarmManager.RTC_WAKEUP,1000*60,pi);
Log.i("Info","Alarm Set");
}

}

我在 logcat 中看到以下条目,无论应用程序是否在内存中,都会显示日志消息。

 01-15 14:08:06.967 1396-1673/? V/AlarmManager: Triggering alarm #0: 2
when =60399531 package =notification.me.com.myApp operation
=*walarm*:com.myApp.myCustomThing flags =0x5

最佳答案

您在 list 文件中明确禁用了您的广播接收器,我看不到您从哪里启用它,这意味着它永远不会接收任何广播。

从 list 文件中删除 android:enabled="false"

关于安卓奥利奥 : Broadcast receiver does not work when application is not in memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48260210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com