Следующий код создает фоновое задание и выполняет его.Видимость потока в AsyncTask
String dateString = null;
if (dateSelected)
dateString = Utils.parseDateToMsTimestamp(selectedDate);
final String ori = originCode;
final String dest = destinationCode;
RequestScheduleTask requestScheduleTask = new RequestScheduleTask();
requestScheduleTask
.execute(ori, dest, dateString);
originCode
и destinationCode
переменные экземпляра.
Ниже приведена фоновая задача.
private class RequestScheduleTask extends
AsyncTask<String, Void, List<CUSchedule>> {
@Override
protected List<CUSchedule> doInBackground(String... args) {
List<CUSchedule> cuSchedules = null;
try {
cuSchedules = CURestCommunicator
.requestSUScheduleByOriginAndDestination(args[0],
args[1], args[2]);
} catch (NetworkException e) {
}
return cuSchedules;
}
@Override
protected void onPostExecute(List<CUSchedule> result) {
if (result == null) {
raiseError("Server Error");
}
InnoBusApplication innoBusApplication = (InnoBusApplication) getApplication();
innoBusApplication.setCuSchedules(result);
super.onPostExecute(result);
}
}
Ниже приведена часть того, что делает http-вызов.
public static List<CUSchedule> requestSUScheduleByOriginAndDestination (
String origin, String destination, String date) throws NetworkException {
Log.d("upload", "up");
origin = Utils.shortNameForCity(origin);
destination = Utils.shortNameForCity(destination);
HttpClient client = null;
String url = "http://" + SVR + "/innobussvr/BusSchedulesSearchByOrgDestStartTimeEndTime/"
+ origin + "/" + destination;
Log.d("url", url);
...
}
Приведенный ниже URL-адрес.
http://192.168.0.150/innobussvr/BusSchedulesSearchByOrgDestStartTimeEndTime/null/null
Я понимаю, что это проблема видимость нити. Как я могу это решить?
Я имею в виду, как вы поняли, что это связано с видимостью резьбы? Можете ли вы отладить этот код в своей среде IDE, чтобы увидеть, что поток идет так, как ожидалось? Это статический вызов из вашей 'RequestScheduleTask', и если вы действительно настраиваете/вызываете свой' RequestScheduleTask' должным образом, это должно работать. Можете ли вы запустить это через отладчик? – prabugp
Не существует проблемы с видимостью нити, ваш код мне кажется подходящим. Готов поспорить, что вы где-то теряете свои строки, попробуйте установить строку 'Log.d()' 'origin' и' destination' до вызова 'Utils.shortNameForCity()'. – nKn
Только после вызова 'requestScheduleTask.execute (ори, Dest, DateString);' Я назвал 'Log.d ("Происхождение/место назначения", originCode + "/" + estinationCode);' И я вижу правильный значения. –