即使手机没有醒来,我的应用也需要定期修复定位.为此,我使用IntentService和Commonsware慷慨提供的模式. https://github.com/commonsguy/cwac-wakeful
为了获得位置修复,我依赖于一个名为Fedor的成员提供的以下代码. 在Android上获取用户当前位置的最简单,最强大的方法是什么?.我稍微修改它以返回null而不是获取最后的已知位置
它们在没有组合时都能很好地工作:我可以在一个Activity中从Fedor的类中获得一个位置修复,我可以使用Commonsware类做一些基本的东西(比如记录一些东西).
当我试图从Commonsware的WakefulIntentService子类获取位置修复时,会出现问题.LocationListeners没有对locationUpdates做出反应,我得到了这些警告(我还没有得到线程,处理程序......的细微之处).有人可以帮我理解问题所在吗?谢谢,祝大家新年快乐:)
12-31 14:09:33.664: W/MessageQueue(3264): Handler (android.location.LocationManager$ListenerTransport$1) {41403330} sending message to a Handler on a dead thread
12-31 14:09:33.664: W/MessageQueue(3264): java.lang.RuntimeException: Handler (android.location.LocationManager$ListenerTransport$1) {41403330} sending message to a Handler on a dead thread
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:196)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Handler.sendMessageAtTime(Handler.java:473)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Handler.sendMessageDelayed(Handler.java:446)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Handler.sendMessage(Handler.java:383)
12-31 14:09:33.664: W/MessageQueue(3264): at android.location.LocationManager$ListenerTransport.onLocationChanged(LocationManager.java:193)
12-31 14:09:33.664: W/MessageQueue(3264): at android.location.ILocationListener$Stub.onTransact(ILocationListener.java:58)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Binder.execTransact(Binder.java:338)
12-31 14:09:33.664: W/MessageQueue(3264): at dalvik.system.NativeStart.run(Native Method)
Run Code Online (Sandbox Code Playgroud)
这是我的WakefulIntentService子类: …
我很害怕。这是一个错误吗?如果您运行它并转到主屏幕,此消息将不断出现。\n返回应用程序也是如此。
\n下面是我的代码的一部分。
\n此页面支持 YouTube 视频和相机功能。
\nList<CameraDescription> cameras = List.empty(growable: true); \n\nclass Home extends StatefulWidget {\n @override\n const Home({Key? key}) : super(key: key);\n _Home createState() => _Home();\n}\n\nclass _Home extends State<Home>{\n CameraController controller =\n CameraController(cameras[1], ResolutionPreset.max);\n //final VideoHomeController controller= Get.put(VideoHomeController());\n late final YoutubePlayerController _controller;\n\n @override\n void initState() {\n super.initState();\n controller.initialize().then((_) {\n if (!mounted) {\n return;\n }\n setState(() {});\n });\n _controller = YoutubePlayerController(\n initialVideoId: '',\n flags: YoutubePlayerFlags(\n autoPlay: false,\n loop: false,\n hideThumbnail: false,\n //isLive: true,\n\n controlsVisibleAtStart: false,\n\n useHybridComposition: false,\n ),\n …Run Code Online (Sandbox Code Playgroud)