我已经创建了服务计时器,所以我得到错误如何解决这个在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线程上执行。记录这个,而不是做一个吐司。