c# – Xamarin.Forms:应用程序关闭时,广播接收器无法正常工作

c# – Xamarin.Forms:应用程序关闭时,广播接收器无法正常工作,第1张

概述我正在使用Xamarin.Forms开发应用程序,虽然大多数工作正常,但我找不到办法让我的广播接收器工作,而应用程序不在RAM中 – 这意味着即使它“轻轻地” “由 Android关闭,而不是由用户强制关闭它. 当应用程序在前台运行或应用程序在后台时,广播接收器本身正常工作,但尚未被杀死.我已经花了几天时间寻找解决方案,而我却无法成功.我已经在Xamarin论坛上看到了一些提示,并在此处声明我的广 我正在使用Xamarin.Forms开发应用程序,虽然大多数工作正常,但我找不到办法让我的广播接收器工作,而应用程序不在RAM中 – 这意味着即使它“轻轻地” “由 Android关闭,而不是由用户强制关闭它.

当应用程序在前台运行或应用程序在后台时,广播接收器本身正常工作,但尚未被杀死.我已经花了几天时间寻找解决方案,而我却无法成功.我已经在Xamarin论坛上看到了一些提示,并在此处声明我的广播接收器在服务中,并在MainActivity文件中启动该服务,虽然看起来服务正在运行,但它仍然没有对我的本地通知做任何事情.

据我所知,在Java AndroID开发中,您所要做的就是在清单文件中声明接收器并且它可以工作,但在使用Xamarin(非常棒的)技术时似乎并非如此.

我希望你们中的一些人也面对这个问题并了解解决方案,因为我非常绝望.非常感谢您的时间,祝您度过愉快的一天!

编辑:

Receiver是使用Xamarin的代码方式声明的,在生成的Manifest中它看起来像这样:

接收器androID:name =“md5d0a2bd06806e04fc29264ca7dfdf52f5.AlarmService”

这是broadcastReceiver本身:

[broadcastReceiver(Enabled=true)]public class AlarmService : broadcastReceiver,IAlarmService{    List<localnotification> notifications;    public overrIDe voID OnReceive (Context context,Intent intent)    {        PowerManager pm = (PowerManager) context.GetSystemService(Context.PowerService);        PowerManager.WakeLock wl = pm.NewWakeLock(WakeLockFlags.Partial,"");        wl.Acquire();        Intent resultIntent = new Intent(context,context.GetType());        resultIntent.PutExtra ("Notification",true);        IList<string> values = intent.GetStringArrayListExtra ("NotificationStrings");        new localnotificationService(context).Notify (values [0],values [1],values [2],values[3]);        wl.Release();           }

它收到的PendingIntent设置如下:

Intent intent = new Intent (context,typeof(AlarmService));        intent.SetAction (notifications [requestCode].ID ?? GuID.NewGuID ().ToString ());        intent.PutStringArrayListExtra ("NotificationStrings",new List<string>() {            notifications [requestCode].Title,notifications [requestCode].Body,notifications [requestCode].AlertAction,notifications [requestCode].UserData,notifications [requestCode].ID        });AlarmManager am = (AlarmManager)context.GetSystemService(Context.AlarmService);        PendingIntent pi = PendingIntent.Getbroadcast(context,intent,0);        am.Set (AlarmType.RtcWakeup,(long)(java.lang.JavaSystem.CurrentTimeMillis () + (dateTime.Value.ToUniversalTime () - DateTime.Now.ToUniversalTime ()).TotalMilliseconds),pi);

然而,即使我删除了OnReceive中的代码,而不是没有发生任何事情,我得到系统消息,指出应用程序已经停止工作,这让我觉得上下文或Intent一定有问题 – 当app活动进入时一切正常RAM.

解决方法 您需要在应用清单中添加在后台运行的权限.
查看我的工作解决方案 here 总结

以上是内存溢出为你收集整理的c# – Xamarin.Forms:应用程序关闭时,广播接收器无法正常工作全部内容,希望文章能够帮你解决c# – Xamarin.Forms:应用程序关闭时,广播接收器无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1231357.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存