首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当应用程序不运行时,我如何使广播接收器工作?

问当应用程序不运行时,我如何使广播接收器工作?
EN

Stack Overflow用户
提问于 2020-06-12 16:54:24
回答 1查看 35关注 0票数 1

我正在尝试创建一个应用程序,该应用程序需要在应用程序未运行时向用户发送通知。我正在用一个广播接收器来做这件事,它会在日期改变时开始工作。这意味着当日期改变时,广播接收器使用处理程序来发送通知。当应用程序运行时,它可以完美地工作,但是,当应用程序不运行时,广播接收器不工作,并且notfication不被发送。

代码如下:

首先,在清单中,我有:

代码语言:javascript
复制
<receiver android:name=".MyBroadcastRecieverDate" >
    <intent-filter>
      <action android:name="android.intent.action.DATE_CHANGED" />
    </intent-filter>
  </receiver>

在主要活动中,我构建并注册广播接收器:

代码语言:javascript
复制
this.recieverDate = new MyBroadcastRecieverDate();

protected override void OnResume()
        {
            base.OnResume();
            RegisterReceiver(recieverDate, new IntentFilter(Intent.ActionDateChanged));
        }

这是接收器的类:

代码语言:javascript
复制
[BroadcastReceiver(Enabled = true)]
    [IntentFilter(new[] { Intent.ActionDateChanged })]
    class MyBroadcastRecieverDate : BroadcastReceiver
    {
        MyHandler handler;

        public MyBroadcastRecieverDate()
        {
        }

        public override void OnReceive(Context context, Intent intent)
        {
            if(intent.Action.Equals(Intent.ActionDateChanged))
            {
                handler = new MyHandler(context);
                Message msg = new Message();
                msg.Obj = "";
                msg.Arg1=1;
                handler.SendMessage(msg);
            }
        }
    }

如果有人可以帮助我,告诉我如何让接收器工作,即使应用程序不运行,这将对我有很大帮助。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-06-12 17:32:25

在Android8.0之前,我们可以使用Service在后台激活应用程序/关闭应用程序,请检查此answer。

然而,从8.0开始,安卓限制了后台执行,安卓应用程序不再具有在后台自由运行的能力,为了执行后台工作,有几种替代服务,我建议你看看Foreground Services。

请参阅Background Execution Limits in Android 8.0。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62340858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档