【发布时间】:2023-04-10 15:54:01
【问题描述】:
我正在尝试开发一个由 Activity 和 Service 组成的 Android 应用程序。 Activity 在 Service 上启动一个无限期的进程,该进程将从 Activity 中关闭。不使用 then 子类 IntentService,而是直接使用 Service。由 onStartCommand 和 OnDestroy 控制。
我显然需要从 Activity 向 Service 传递信息:Service 的状态和一些字符串。
我尝试使用 LocalBrodcastManager,但是当转动设备或活动进入 onPause 状态时,消息会丢失。我试图遵循几个例子,但收效甚微。特别是由于缺少一些信息,我无法完成它,这些信息显然被认为是显而易见的,但对我来说并不明显:https://developer.android.com/training/run-background-service/report-status.html
然后我尝试通过 IBinder (Example: Communication between Activity and Service using Messaging) 使用 Messenger,但程序似乎有点复杂,我无法满足我的需求。
我需要从我的 Activity 启动服务(可能会自动绑定?,如果使用 Messenger),Service 应该发出 Activity 处于活动状态的信号,然后 Service 通过 GPS LocationListener 记录一些点,将其写入一个文件,并且应该再次指出 Activity、正在记录的数据、文件大小等。
您建议使用什么来传递此信息,您能否提供一些示例?
【问题讨论】:
-
您可以配置您的应用程序,以便显示方向更改不会终止并重新启动 Activity。这可能是解决您的问题的最简单方法。
-
有趣,但我必须使用什么?我在想这是不可能的,为此必须使用 savedInstanceState...
-
只需在清单中声明您的
Activity将自行处理方向更改。覆盖onConfigurationChanged(),当它被调用时,您可以重置内容视图和/或更改您的布局。 -
啊是的!,我明白了... android:configChanges="orientation|screenSize" 谢谢,去试试。 :-)
标签: android android-activity android-service messenger localbroadcastmanager