Android - Передача .class в AsyncTask для использования с Gson - PullRequest
1 голос
/ 28 января 2012

Мое приложение использует веб-интерфейс и использует Json для большей части общения.Я нахожусь в процессе оптимизации кода и столкнулся с некоторыми проблемами.

Ранее все мои действия использовали отдельные подклассы AsyncTask для выполнения вызовов к веб-сервисам, они получали ответ в виде строки и затем анализировали его какJson и, наконец, использовать метод Gson fromJson () для создания объектов Java.

Я пытаюсь сузить его до одного класса, который может использоваться всеми.В настоящее время у меня есть следующее для моего doInBackground () ..

@Override
protected JsonObject doInBackground(Object... params) {

    String res = WebServices.httpGet(params[0]., (Map<String, String>) params[1]);
    JsonParser parser = new JsonParser();
            JsonObject jsonObject = parser.parse(res);
    return jsonObject;
}

Так что я передаю в качестве параметров строку, которая является вызываемым методом, и HashMap, который имеет параметры.Затем вызывающий Activity анализирует Json как объект Java с использованием Gson.

Однако, поскольку некоторые ответы могут быть довольно большими, я не хочу, чтобы Json анализировался в потоке пользовательского интерфейса, а скорее в AsyncTask.,Для этого мне нужно как-то передать параметр T.class в мой метод doInBackground (), потому что это требуется для метода Gson (). FromJson ().Мой звонок будет примерно таким:

new AsyncJsonTask().execute("GetValues", parameterMap, POJO.class);

Как я могу это сделать, и это правильный подход к минимизации здесь?

1 Ответ

1 голос
/ 29 января 2012

Class<?> является подтипом Object, поэтому вы можете передавать его как есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...