我正在尝试在android中创建一个简单的服务。
我检查了Settings->应用程序标签,我可以看到该服务正在运行。不幸的是,OnStartCommand函数没有被执行。我甚至看不到祝酒词。
这是我的代码:
服务类
public class CertisServices extends Service {
GPSTracker gps;
private double latitude = 0;
private double longitude = 0 ;
@Override
public IBinder onBind(Intent intent) {
return null;
}
public int OnStartCommand(Intent intent, int flags, int startId){
get_my_gps_location();
String lati = String.valueOf(latitude);
String longi = String.valueOf(longitude);
Toast.makeText(this, "Services started : ", Toast.LENGTH_LONG).show();
send_data(lati, longi);
return START_STICKY;
}
public void OnDestroy (){
super.onDestroy();
Toast.makeText(this, "Services stopped", Toast.LENGTH_LONG).show();
}
private void send_data(String lat, String lng){
HttpClient httpclient = new DefaultHttpClient();
// Your URL
HttpPost httppost = new HttpPost("http://172.16.110.3/agent_tracking/index.php/api/rest/get-schedules/");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
// Your DATA
nameValuePairs.add(new BasicNameValuePair("latitude", lat));
nameValuePairs.add(new BasicNameValuePair("longitude", lng));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response;
response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void get_my_gps_location(){
gps = new GPSTracker(CertisServices.this);
// check if GPS enabled
if(gps.canGetLocation()){
latitude = gps.getLatitude();
longitude = gps.getLongitude();
}else{
// can't get location
// GPS or Network is not enabled
// Ask user to enable GPS/network in settings
//gps.showSettingsAlert();
}
}
}
主要活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
startService(new Intent(getBaseContext(), CertisServices.class));
我没有收到任何错误消息。任何人都可以帮我解决这个问题吗?感谢。
答案 0 :(得分:2)
正如@pskink所说,你的服务代码中有拼写错误。尝试将OnStartCommand
方法重命名为onStartCommand
(以及OnDestroy
至onDestroy
)。
如果它没有解决您的问题,您应该检查您是否在清单中声明了您的服务:
<service android:name="your.package.CertisService" />
答案 1 :(得分:0)
尝试使用日志而不是吐司。 OnStartCommand()可能正在执行,但有时(在我的情况下从不)Toast消息永远不会出现。尝试调试服务。