无法使嵌入式BroadcastReceiver正常工作

吊起的

这是用于GPS的。我有一个带有嵌入式接收器类的父类,还有一个LocationTrackingService用于处理GPS内容的单独的类。我需要Broadcast花费里程来更新UI,但从未收到广播。这是BroadcastReceiver项目中唯一的。我想我可以设置一个计时器,ServiceConnection每隔几秒钟检查一次,以获取新的里程,但这是不好的编码。

什么都没有,Manifest因为我正在动态注册和注销。

public class Parent
{
  GPSReceiver gpsreceiver;

  public class EmbeddedReceiver extends BroadcastReceiver
  {
    @Override
    public void onReceive(Context arg0, Intent intent)
    {
      Bundle extras = intent.getExtras();
      if (extras != null) {
        distance = extras.getDouble(LocationTrackingService.UPDATE_MILEAGE_MESSAGE);
      }
    }
  }

  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    gpsReceiver = new EmbeddedReceiver();
  }

  private void gpsStart()
  {
    if (gpsReceiver != null) {
      intentFilter = new IntentFilter();
      intentFilter.addAction("don't know what goes here");
      LocalBroadcastManager.getInstance(this).registerReceiver(gpsReceiver, intentFilter);
    }
  }

  private void gpsStop()
  {
    if (gpsReceiver != null) {
      LocalBroadcastManager.getInstance(this).unregisterReceiver(gpsReceiver);
    }
  }
}

public class LocationTrackingService extends Service
{
  private LocalBroadcastManager broadcaster;

  @Override
  public int onStartCommand(Intent intent, int flags, int startId)
  {
    super.onStartCommand(intent, flags, startId);

    broadcaster = LocalBroadcastManager.getInstance(this);
    return START_STICKY;
  }

  .... code

  private void sendResult(String message)
  {
    Intent i = new Intent("ParentActivity");
    i.setAction("ParentActivity");
    if (message != null) {
      i.putExtra(message, mileageRunningTotal);
    }

    broadcaster.sendBroadcast(i);
  }
}

当我将代码跟随到LocalBroadcastManager中时,在第215行,它确实mActions.get(intent.getAction()获得ArrayList<ReceiverRecord>,并且为null,但是我不知道为什么。

感谢您提供的任何帮助。

zgc7009

广播的工作方式是该动作充当接收者的触发。换句话说,在任何给定时间,整个电话都会发送大量广播,接收者的目标是在广播经过时以相应的动作捕获广播。它将使所有其他广播继续播放而不会中断。一旦找到所需的内容,它将接收它并执行onReceive()功能。

尽管操作可以是您喜欢的任何字符串键,但建议您在程序包名称中添加。这使广播具有特定性,并可以在手机正在发送的广播范围内更轻松地管理广播。这很重要,因为可以在应用程序之间发送广播。这样可以避免出现以下情况

应用程序A发出了我们不感兴趣的动作为“ SOME_ACTION”的系统广播。应用程序B也将发出我们将要接收的动作为“ SOME_ACTION”的本地广播。我们将设置接收器1来查找和接收来自应用程序B的动作“ SOME_ACTION”。但是,由于动作冲突,当应用程序A发送广播“ SOME_ACTION”时,我们会不适当地在接收器1中接收它并执行onReceive ()功能,就像我们刚从应用程序B接收到本地广播一样。

按照建议的约定,通过执行以下操作可以避免上述情况

与其将您的操作设置为“ SOME_ACTION”,不如将其设置为“ com.app_b.package.SOME_ACTION”。这样,当广播操作“ com.app_a.package.SOME_ACTION”通过时,就不会为我们的操作感到困惑,并且将被允许通过。

使用包名称可能还有其他原因,但这并不是最好的选择,但据我所知,这是约定背后的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

嵌入式PHP if语句无法正常工作

来自分类Dev

嵌入式Vimeo视频上的CSS覆盖无法在Firefox全屏上正常工作

来自分类Dev

C#中的嵌入式资源字体无法正常工作

来自分类Dev

Windows应用商店应用程序嵌入式ScrollViewer无法正常工作

来自分类Dev

VideoJS-嵌入式视频在7号之后无法正常工作

来自分类Dev

带有Jetty env文件的嵌入式Jetty无法正常工作

来自分类Dev

嵌入式Vimeo视频上的CSS覆盖无法在Firefox全屏上正常工作

来自分类Dev

带有嵌入式 tomcat 的 Spring Boot 在端口上运行,但无法正常工作

来自分类Dev

Bootstrap响应式嵌入无法正常工作

来自分类Dev

将adf RTF编辑器中的嵌入式图像发送到Outlook无法正常工作

来自分类Dev

嵌入式Jetty和正常关机

来自分类Dev

如何正常关闭嵌入式码头

来自分类Dev

嵌入式 PDF 在 IE 中仅显示文件名,在 chrome 中正常工作

来自分类Dev

当我检查带有应用程序的嵌入式运行时时,应用程序无法正常工作

来自分类Dev

为什么使用Mongoose JS删除嵌入式子文档数组元素无法正常工作?

来自分类Dev

嵌入式Tomcat无法启动

来自分类Dev

无法检索嵌入式资源流

来自分类Dev

嵌入式AVPlayer无法播放视频

来自分类Dev

YouTube嵌入式视频无法启动

来自分类Dev

嵌入式视频无法以模式打开

来自分类Dev

无法从嵌入式HTML获取表格

来自分类Dev

嵌入式YouTube视频无法加载

来自分类Dev

YouTube嵌入式视频无法启动

来自分类Dev

Rcpp:使用嵌入式R代码调用时,“无法更改工作目录”

来自分类Dev

什么是非嵌入式活动,为什么android:fitsSystemWindows无法工作?

来自分类Dev

Rcpp:使用嵌入式R代码调用时,“无法更改工作目录”

来自分类Dev

BroadcastReceiver中的Android onReceive无法正常工作

来自分类Dev

在AndroidManifest中注册的BroadcastReceiver无法正常工作

来自分类Dev

SCREEN_OFF BroadcastReceiver无法正常工作

Related 相关文章

  1. 1

    嵌入式PHP if语句无法正常工作

  2. 2

    嵌入式Vimeo视频上的CSS覆盖无法在Firefox全屏上正常工作

  3. 3

    C#中的嵌入式资源字体无法正常工作

  4. 4

    Windows应用商店应用程序嵌入式ScrollViewer无法正常工作

  5. 5

    VideoJS-嵌入式视频在7号之后无法正常工作

  6. 6

    带有Jetty env文件的嵌入式Jetty无法正常工作

  7. 7

    嵌入式Vimeo视频上的CSS覆盖无法在Firefox全屏上正常工作

  8. 8

    带有嵌入式 tomcat 的 Spring Boot 在端口上运行,但无法正常工作

  9. 9

    Bootstrap响应式嵌入无法正常工作

  10. 10

    将adf RTF编辑器中的嵌入式图像发送到Outlook无法正常工作

  11. 11

    嵌入式Jetty和正常关机

  12. 12

    如何正常关闭嵌入式码头

  13. 13

    嵌入式 PDF 在 IE 中仅显示文件名,在 chrome 中正常工作

  14. 14

    当我检查带有应用程序的嵌入式运行时时,应用程序无法正常工作

  15. 15

    为什么使用Mongoose JS删除嵌入式子文档数组元素无法正常工作?

  16. 16

    嵌入式Tomcat无法启动

  17. 17

    无法检索嵌入式资源流

  18. 18

    嵌入式AVPlayer无法播放视频

  19. 19

    YouTube嵌入式视频无法启动

  20. 20

    嵌入式视频无法以模式打开

  21. 21

    无法从嵌入式HTML获取表格

  22. 22

    嵌入式YouTube视频无法加载

  23. 23

    YouTube嵌入式视频无法启动

  24. 24

    Rcpp:使用嵌入式R代码调用时,“无法更改工作目录”

  25. 25

    什么是非嵌入式活动,为什么android:fitsSystemWindows无法工作?

  26. 26

    Rcpp:使用嵌入式R代码调用时,“无法更改工作目录”

  27. 27

    BroadcastReceiver中的Android onReceive无法正常工作

  28. 28

    在AndroidManifest中注册的BroadcastReceiver无法正常工作

  29. 29

    SCREEN_OFF BroadcastReceiver无法正常工作

热门标签

归档