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

Posted

技术标签:

【中文标题】使用android中的计时器每10分钟跟踪一次Gps【英文标题】:Track Gps At every 10 minutes using timer in android 【发布时间】:2011-06-22 18:09:39 【问题描述】:

我正在开发一个 android 应用程序,并且我正在使用一项服务,该服务每 10 分钟通过 GPS 跟踪一次位置。但是当我将位置侦听器放在计时器任务中时,它会引发异常:

无法将代码放入尚未调用 looper.prepare() 的线程中。

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

【问题讨论】:

【参考方案1】:

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

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

这将每 10 分钟自动向侦听器发送更新

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

您正在运行什么代码并收到此错误。从主 UI 线程执行代码。要么 通过主线程在你的主类中创建一个 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();

【讨论】:

【参考方案2】:

这个方法很简单,可以更新UI线程:

      new CountdownTimer(30000, 1000)  

    public void onTick(long millisUntilFinished)  
        mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); 
     

    public void onFinish()  
        mTextField.setText("done!"); 
     
 .start(); 

【讨论】:

以上是关于使用android中的计时器每10分钟跟踪一次Gps的主要内容,如果未能解决你的问题,请参考以下文章

如何每分钟更新一个 Android 应用小部件

在后台永远运行Swift 2.0应用程序以更新服务器的位置

定时器自动刷新浏览器中的 HTML 页面 - 每 15 分钟

每2分钟安排一次闹钟android

每15分钟重复一次函数c# [关闭]

spring quartz 定时器时间格式设置