Обратный ответ андроид залп в рабочий менеджер - PullRequest
0 голосов
/ 11 марта 2019

Я пытался реализовать Android-залп с Workmanager для фоновой загрузки данных. Нет никаких проблем с реализацией, но очень сложно отследить и вернуть результат ответа через Result.success для регистрации.

override fun doWork(): Result {


    var volley = VolleySingleTon.getInstance(mContext)
        .syncLocationData(mContext, location, success = Function { collection ->

        ERROR HERE************
           **Need to return the return Result.success()**
           **but i can't return the above**

        }, failure = Function { collection ->

        ERROR HERE************
           **Need to return the return Result.failure()**
          **but i can't return the above**
        })


}

Класс метода запроса залпа

fun syncLocationData(
    context: Context,
    location: List<VehicleLocation>, success: Function<RestCollection, Any>, failure: Function<RestCollection, Any>
) {

    var jsonObject: JSONObject? = null
    val jsonString = RestUtil.getGson().toJson(location)

    try {
        jsonObject = JSONObject(jsonString)
    } catch (e: JSONException) {
        e.printStackTrace()
    }

    addToRequestQueue(
        JsonObjectRequest(
            Request.Method.POST,
            AppConstants.WEB_SERVER.toString + AppConstants.SYNC_LOC_DATA.toString, jsonObject,
            SuccessHandler(context, null, success),
            ErrorHandler(context, null, failure)
        )
    )

}

Обработчик, используемый для получения результата из ответа

class SuccessHandler(
val context: Context,
private val progressBar: ProgressBar?,
private val successCallBack: Function<RestCollection, Any>
 ) : Response.Listener<JSONObject> {


override fun onResponse(json: JSONObject?) {
    if (json != null) {
        progressBar?.visibility = View.GONE

        val response: ApplicationResponse =
            RestUtil.getGson().fromJson(json.toString(), ApplicationResponse::class.java)

        successCallBack.apply(response.collection)
    }
}

}

Есть ли обходной путь для этого? Спасибо !!

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