我已经创建了服务计时器,所以我得到错误如何解决这个在android
问题描述:
我已经创建了一个服务,并且还在清单中添加了它。当我使用定时器定期调用此服务并在定时器中使用位置管理器来获取用户位置时。但有错误这样的:我已经创建了服务计时器,所以我得到错误如何解决这个在android
11月5日至11日:57:17.574: ERROR/AndroidRuntime(3305): 了java.lang.RuntimeException:无法 内螺纹创建处理程序已 不叫Looper.prepare()
告诉我哪里是我的代码中的问题。
代码是在这里
package com.collabera.labs.sai;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
public class SimpleService extends Service {
Timer mytimer;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
super.onCreate();
Toast.makeText(this,"Service created ...", Toast.LENGTH_LONG).show();
mytimer = new Timer();
mytimer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
//getdata();
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
mlocListener);
}
},0,1000);
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service destroyed ...", Toast.LENGTH_LONG).show();
}
public void getdata()
{
}
public class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
loc.getLatitude();
loc.getLongitude();
String Text = "My current location is: " + "Latitude = "
+ loc.getLatitude() + "Longitude = " + loc.getLongitude();
/*Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT)
.show();*/
Log.d("TAG", "Starting..");
}
@Override
public void onProviderDisabled(String provider) {
/*Toast.makeText(getApplicationContext(), "Gps Disabled",
Toast.LENGTH_SHORT).show();*/
}
@Override
public void onProviderEnabled(String provider) {
/*Toast.makeText(getApplicationContext(), "Gps Enabled",
Toast.LENGTH_SHORT).show();*/
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}/* End of Class MyLocationListener */
}
答
Toast.makeText(this, "Service destroyed ...", Toast.LENGTH_LONG).show();
您不能从非UI线程修改UI。服务永远不会在UI线程上执行。记录这个,而不是做一个吐司。