1

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

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

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

4

2 回答 2

1

您无需每 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();
于 2011-02-07T13:52:08.807 回答
0

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

      new CountdownTimer(30000, 1000) { 

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

    public void onFinish() { 
        mTextField.setText("done!"); 
    } 
 }.start(); 
于 2011-02-07T13:40:15.197 回答