Ну, я продумал эту проблему, и мне нужна помощь со стороны сообщества.Android выполняет ImageUpload в фоновом режиме и данные о намерениях доступа в обратном вызове
Я хочу загрузить изображения (5 изображений) на сервер, который в настоящее время выполняется в async-задаче приложения. Следовательно, загрузка может быть остановлена, когда пользователь закрывает приложение, поэтому я хочу выполнить эту операцию, используя IntentService
.
Итак, я создал свою службу Intent для выполнения загрузки изображения.
public class ImageUploadService extends IntentService {
/**
* Creates an IntentService. Invoked by your subclass's constructor.
*
* @param name Used to name the worker thread, important only for debugging.
*/
public ImageUploadService(String name) {super(name);}
public ImageUploadService(){
this(ImageUploadService.class.getName());
}
@Override
protected void onHandleIntent(Intent intent) {
//todo perform long running image upload operation
KbUserService kbUserService = JacksonRestRequestBuilder
.setupUploadRestService(RestUrls.BASE_URL_CUSTOMER, true,
KbUserService.class, getApplicationContext());
LinkedHashMap<String, Object> requestBody = new LinkedHashMap<>();
Call<LinkedHashMap<String,Object>> call = kbUserService.uploadFile(requestBody);
call.enqueue(new KbCallback() {
@Override
public void failure(Map<String, Object> serverErrorResponse, String genericErrorMessage) {
//todo send notification that image upload failed and also send broadcast event that image upload failed.
}
@Override
public void success(Map<String, Object> successResponse) {
Map<String, Object> modelDataFromResponseAsMap =
ClientModelUtils.getModelDataFromResponseAsMap(successResponse);
// Log.i(NAME,"Background Image upload completed for "+msg.arg1);
String fileUrl = ClientModelUtils.getString(modelDataFromResponseAsMap,
ModelConstants.UserConstants.IMAGE_URL);
//todo send notification that image upload success and send broadcast that image upload success.
// uploadFileSuccess(fileUrl, profName);
// bean.setUploadInProgress(false);
// view.uploadFileSuccess(fileUrl,profName);
}
@Override
public void networkOrUnexpectedError(String message) {
//todo send notification that image upload failed and also send broadcast event that image upload failed.
}
});
}
protected void showToast(final String msg){
//gets the main thread
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
// run this code in the main thread
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
}
});
}
}
Поэтому я отправляю широковещательную передачу в ответ на успешную реакцию на все зарегистрированные действия.
Я не в состоянии решить следующие проблемы,
1. Пусть, когда вышел из приложения и вернулся к деятельности, как знать, какие в настоящее время загрузки изображений?
2.How для доступа к данным в намерениях onHandleIntent()
внутри обратного вызова ?, Потому что в намерении данных у меня есть информация о imageType
так, когда запрос на успех я хочу отправить трансляцию с imageUrl
и imageType
.
Как определить текущие выполняемые задачи? а также как вы можете получить доступ к данным о намерениях внутри обратного вызова? – Manikanta
Вы должны хранить свои данные о намерениях в качестве поля. Что касается текущей загружаемой задачи, вам придется посмотреть ее на библиотеку, которую вы используете. Если вы можете получить обратный вызов, вы сможете транслировать эту информацию. –