android - 在 android 中使用计时器每 10 分钟跟踪一次 Gps

标签 android android-service android-gps android-looper

我正在开发一个 Android 应用程序,我正在使用每 10 分钟通过 GPS 跟踪一次位置的服务。但是当我将位置监听器放在计时器任务中时,它会抛出异常:

Cannot put code inside thread that has not called looper.prepare().

有没有人对这个问题有任何见解?

最佳答案

您无需启动服务以每 10 分钟接收一次 locationUpdate 而是做这样的事情

 mLocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
 mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 600000, 0, mLocListener);

这将每 10 分钟自动向监听器发送一次更新

当你遇到像 Looper 这样的错误时。这意味着您不能从其他 Main UI Worker 线程执行某些操作。

您正在运行什么代码并收到此错误。从主 UI 线程执行代码。或者 通过 Main Thread 在您的主类中创建一个 Handler 对象

 Handler mHandler = new Handler();

然后在你的任何其他线程中做这样的事情

  new Thread(new Runnable(){ public void run(){

           // any of your code
        mHandler.post(new Runnable(){public void run(){

         // the code giving you error Looper
        }});
   }}).start();

关于android - 在 android 中使用计时器每 10 分钟跟踪一次 Gps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4921916/

相关文章:

java - 如何根据通过 Google GNSSLogger 获取的参数计算伪距?

android - 在 Android "Can' 上与 WhatsApp 共享文本 t 发送空消息”

android - 使用 span 在 textview 中插入标签

打包时Android、Gradle和重复文件错误

Android PendingIntent 额外

java - 为什么location.getSpeed()总是返回0

android - 查找手动注册(混淆)的原生函数地址

android - Context.startForegroundService 然后没有调用 Service.startForeground : Alternative solution

没有 Activity 的 Android 应用程序即服务

android - SettingsClient 的位置请求总是得到 RESULT_CANCELED