gpt4 book ai didi

android - LocationManager 和 Looper - 每个线程只能创建一个 Looper

转载 作者:行者123 更新时间:2023-11-29 02:09:08 24 4
gpt4 key购买 nike

我的应用程序有问题。我需要在特定时间间隔获取位置更新,因此基本上需要能够很好地控制 GPS 模块,这对于 Android 操作系统来说并不容易。基本上我需要以 5 分钟的间隔打开 GPS 2 分钟。我有时间,我可以两次获取位置,但随后应用程序因运行时错误而崩溃 - 每个线程只能创建一个 Looper。计时是在服务类中完成的并且运行良好,它删除了更新以及我遇到的这个问题的所有内容。

我最初有这个错误——“无法在没有调用 Looper.prepare() 的线程内创建处理程序”,我用下面的代码修复了这个错误,但现在我得到了唯一一个 Looper 错误

我的 looper Thread 看起来像这样(请不要苛刻,我是 Android 新手 lol)

            public void run() {
Looper.prepare();
setLooper(Looper.myLooper());
LocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, locationListener);
Timer t = new Timer();
t.schedule(new TimerTask() {

@Override
public void run() {
stopLooper();

}

}, TWO_MINUTES);
Looper.loop();
t.cancel();
setLooper(null);
vb.getLm().removeUpdates(ll);

}

就像我说的,我是新手,我不确定如何使用 Handler。我确实从 StackOverflow 上的一篇帖子中获得了一些代码,只是以不同的方式使用它,但它不起作用。

拜托,我真的需要帮助。感谢您的任何回复。

好的,我似乎已经找到了解决方案,只需要对其进行测试,然后再等 7 个小时,然后我才能发布答案,哈哈。感谢您的任何意见和回复。

最佳答案

无法理解您的代码在做什么:)为什么不使用像这样更简单的东西:

public void run( ) {
while (true) {
LocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, locationListener);
sleep(2 * 60 * 1000);
LocationManager.removeUpdates();
sleep(5 * 60 * 1000);
}
}

好吧,也许是这样的?

Runnable start = new Runnable( ) {
public void run( ) {
LocationManager.startLocationUpdates
handler.postDelayed(stop, 2 * 60 * 1000L);
}
}

Runnable stop = new Runnable( ) {
public void run( ) {
LocationManager.removeLocationUpdates
}
}

Runnable onePeriod = new Runnable( ) {
public void run( ) {
handler.postDelayed(onePeriod, 5 * 60 * 1000);
handler.post(start);
}
}

public void startContiniuosListening( ) {
handler.post(onePerion);
}

public void stopContiniousListening( ) {
handler.removeCallback(stop);
handler.removeCallback(onePeriod);
LocationManager.removeLocationUpdates(...)
}

其中处理程序是类字段:

Handler handler = new Handler();

关于android - LocationManager 和 Looper - 每个线程只能创建一个 Looper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8442519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com