我正在开发一个 android 应用程序,我正在使用每 10 分钟通过 GPS 跟踪位置的服务。但是当我将位置侦听器放在计时器任务中时,它会引发异常:
无法将代码放入尚未调用的线程中
looper.prepare()
。
有人对这个问题有任何见解吗?
我正在开发一个 android 应用程序,我正在使用每 10 分钟通过 GPS 跟踪位置的服务。但是当我将位置侦听器放在计时器任务中时,它会引发异常:
无法将代码放入尚未调用的线程中
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();
这个方法很简单,可以更新 UI 线程:
new CountdownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();