В моем коде Android у меня есть AsyncTask
, который, кажется, невозможно преобразовать в простую функцию Public void
.Android, преобразующий AsyncTask в общедоступную функцию void?
private class JSONWeatherTask extends AsyncTask<String, Void, Weather> {
@Override
protected Weather doInBackground(String... params) {
Weather weather = new Weather();
String data = ((new WeatherHttpClient()).getWeatherData(params[0]));
// WeatherC = params[0];
try {
weather = JSONWeatherParser.getWeather(data);
// Let's retrieve the icon
weather.iconData = ((new WeatherHttpClient()).getImage(weather.currentCondition.getIcon()));
} catch (JSONException e) {
e.printStackTrace();
}
return weather;
}
@Override
protected void onPostExecute(Weather weather) {
super.onPostExecute(weather);
if (weather.iconData != null && weather.iconData.length > 0) {
// Bitmap img = BitmapFactory.decodeByteArray(weather.iconData, 0, weather.iconData.length);
//imgView.setImageBitmap(img);
}
WeatcherCels = ("" + Math.round((weather.temperature.getTemp() - 273.15)) + " C");
Toast.makeText(context, WeatcherCels, Toast.LENGTH_SHORT).show();
}
}
Путь, который я исполняю task
является:
JSONWeatherTask task = new JSONWeatherTask();
task.execute(new String[]{"canada,toronto"});
Однако я пытаюсь использовать просто что-то вроде:
String WeatherStr = getWeather("canada,toronto");
Почему вы хотите его изменить? Если вы выполняете некоторую фоновую задачу, например, загружая данные из Интернета в свою Asynctask, не меняйте ее на простую функцию. В противном случае он отобразит «Исключение MainThread» в устройствах с более высокой версией. – Kunu