在Android中,我使用Timer類來檢查移動設備中的每秒無線連接,因爲我想打開GPS,當設備不使用WiFi時。但它顯示了致命的Timer-0 RunTimeException。Android致命Timer-0 RunTimeException
這裏是我的定時器功能
public void checkWifi()
{
Timer timer = new Timer();
TimerTask hourlyTask = new TimerTask() {
@Override
public void run()
{
boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.isConnectedOrConnecting();
if (!isWifi) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
}
}
};
timer.schedule(hourlyTask, 0l, 1000);
}
,這裏是我的logcat
02-14 02:52:53.126: E/AndroidRuntime(1539): FATAL EXCEPTION: Timer-0
02-14 02:52:53.126: E/AndroidRuntime(1539): Process: com.example.gpsco11wifialert, PID: 1539
02-14 02:52:53.126: E/AndroidRuntime(1539): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
02-14 02:52:53.126: E/AndroidRuntime(1539): at android.os.Handler.<init>(Handler.java:200)
02-14 02:52:53.126: E/AndroidRuntime(1539): at android.os.Handler.<init>(Handler.java:114)
02-14 02:52:53.126: E/AndroidRuntime(1539): at android.location.LocationManager$ListenerTransport$1.<init>(LocationManager.java:221)
02-14 02:52:53.126: E/AndroidRuntime(1539): at android.location.LocationManager$ListenerTransport.<init>(LocationManager.java:221)
02-14 02:52:53.126: E/AndroidRuntime(1539): at android.location.LocationManager.wrapListener(LocationManager.java:844)
02-14 02:52:53.126: E/AndroidRuntime(1539): at android.location.LocationManager.requestLocationUpdates(LocationManager.java:857)
02-14 02:52:53.126: E/AndroidRuntime(1539): at android.location.LocationManager.requestLocationUpdates(LocationManager.java:454)
02-14 02:52:53.126: E/AndroidRuntime(1539): at com.example.gpsco11wifialert.GpsC011Wifi$MyLocationListener$4.run(GpsC011Wifi.java:213)
02-14 02:52:53.126: E/AndroidRuntime(1539): at java.util.Timer$TimerImpl.run(Timer.java:284)
所以嘗試添加Looper.prepare()內的Runnnable – nikis
遐我試了一下,但還是同樣的錯誤.. –