Android:不同活动的交流

Android:不同活动的交流,android,android-activity,Android,Android Activity,我有一个关于不同应用程序组件之间通信的问题(不是基于代码) 我想写一个“大”的日志/跟踪工具。这个工具有三个部分 第二部分,我的主要活动。我想通过单击/取消单击复选框来启动/停止跟踪/记录 部分,位置部分,我想在其中跟踪用户的位置历史(通过位置API) 部分,传感器记录部分,其中我跟踪从用户智能手机获取的所有传感器数据 在第2部分和第3部分中,我想设置位置API(例如精度和刷新时间)和传感器API的设置,此外,在第3部分中,我想激活/停用不同的传感器进行记录 在第1部分,我的主要活动中,我想开始

我有一个关于不同应用程序组件之间通信的问题(不是基于代码)

我想写一个“大”的日志/跟踪工具。这个工具有三个部分

  • 第二部分,我的主要活动。我想通过单击/取消单击复选框来启动/停止跟踪/记录
  • 部分,位置部分,我想在其中跟踪用户的位置历史(通过位置API)
  • 部分,传感器记录部分,其中我跟踪从用户智能手机获取的所有传感器数据
  • 在第2部分和第3部分中,我想设置位置API(例如精度和刷新时间)和传感器API的设置,此外,在第3部分中,我想激活/停用不同的传感器进行记录

    在第1部分,我的主要活动中,我想开始完整的日志记录/跟踪

    更多说明见附图

    我对用JAVA编写代码没有问题。我的问题是,我是Android新手。我对一项活动没有任何问题。但是不止一个。。。嗯。我不理解我的主要活动与例如地点活动(图片中的名称)之间的沟通

    在JAVA中,我将拥有自己的类Location/Sensor,在其中存储逻辑

    单击“单击以打开跟踪”后,我将创建两个线程(用于位置和传感器),跟踪将在其中开始。两者都会将数据保存在列表中,在我停止跟踪后,它们会按照我的需要写入文本文件

    在安卓系统中呢? 在我的特殊情况下?我有3项活动吗?我是否通过意图进行沟通?这有点令人困惑,因为在本例中,所有这些活动都有自己的onCreate()/onStop()/。。。方法。所以我确实需要将我的跟踪/记录逻辑与我的活动分开,因为我只想选择/设置我的设置,然后关闭我的位置/记录活动以返回到我的主活动

    如果你能推荐一个教程或者帮助我,那就太好了


    假设您希望在应用程序处于后台时接收位置和传感器事件,我建议您:

    • 将跟踪设置保存在一些持久性存储中,例如SharedReferences,配置屏幕(活动/片段)只需读取和写入这些设置即可
    • 在您的主要活动中,选中复选框后,阅读最新配置,开始跟踪,并保持您的跟踪器处于“打开”状态
    • 要请求位置,请使用以PendingEvent为参数的方法,例如float、android.location.Criteria、android.app.PendingEvent),并将PendingEvent的目标设置为IntentService,在该IntentService中处理和持久化位置
    • 要请求传感器事件,您需要一个活动侦听器。创建一个单独的服务,例如通过AlarmManager定期调用该服务,以收集传感器数据样本,然后将其保存
    请记住,在服务中执行操作时(例如,侦听传感器事件),设备的应用程序处理器可能会进入睡眠状态,您将停止接收事件。为了防止这种情况,您需要安装WakeLock,但要小心不要耗尽电池电量。此外,当设备重新启动时,您需要重新启用位置/报警侦听器

    最后,您可能会得到如下体系结构:

    • UI:编辑跟踪设置和启用/禁用跟踪的活动
    • TrackingHelper:一个具有启用/禁用跟踪逻辑的类-注册位置侦听器和警报,触发SensorService以收集一些传感器数据
    • SensorService:在请求的时间间隔内注册以侦听传感器事件,然后自行停止的服务
    • LoggerService:接收位置对象(可能还有其他数据)并将其持久化的IntentService
    • BootReceiver:调用TrackingHelper.startTracking的广播接收器(如果启用了跟踪)