我有一次應用程序停止應發位置, 一個應用程序我重寫的onStop方法和它運行的服務完美 但也達到了當位置發送者什麼都沒有發生,這裏是我的服務代碼:異步任務不會觸發
@Override
public void onCreate() {
super.onCreate();
dbHelper = new DBHelper(this);
warnniSharedPreference = new WarnniSharedPreference(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
LocationSender locationSender = new LocationSender();
locationSender.execute();
return android.app.Service.START_NOT_STICKY;
}
private class LocationSender extends AsyncTask<Void, Void, Void> {
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
if (null != response) {
dbHelper.deleteAllRecords(DBHelper.LOCATION_TRACKER_TABLE_NAME);
dbHelper.deleteAllRecords(DBHelper.IMAGES_TABLE_NAME);
}
}
@Override
protected Void doInBackground(Void... voids) {
try {
int start = 0;
int end = 0;
ArrayList<WarnniLocation> locationArrayList = dbHelper.getAllLocationRecords();
int locationGroupSize = (int) Math.ceil((double) locationArrayList.size()/(double) 60);
for (int i = 0; i < locationGroupSize; i++) {
MultipartUtility multipartUtility = new MultipartUtility(Constants.ADD_LOCATION_DATA, "UTF-8");
multipartUtility.addFilePart("image", new File(imagesPaths.get(i)));
multipartUtility.addFormField("driverId", String.valueOf(warnniSharedPreference.getKey("id")));
if (i == 0) {
end = 59;
} else {
end = i * 60 + 59;
if (end >= locationArrayList.size()) {
end = locationArrayList.size() - 1;
}
}
multipartUtility.addFormField("locations", new Gson().toJson(locationArrayList.subList(start, end)));
response = multipartUtility.finish();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
,請提前通知 感謝和任何幫助將不勝感激
爲什麼在服務中使用'AsyncTask'?服務已經在後臺運行。 – Yupi
那我應該直接發送請求嗎? –
我得到了android.os.NetworkOnMainThreadException –