Мое приложение имеет функцию, которая отправляет некоторые данные в веб-службу, когда в меню выбран параметр.Для этого у меня есть Activity, которая выполняет AsyncTask после выбора элемента.
Вот пример кода, упрощенного для упрощения в демонстрационных целях.Метод sendDataToWebService () вызывается для события выбора:
private void sendDataToWebService(MyData myData)
{
MyAsyncTask task = new MyAsyncTask();
task.execute(myData);
}
private class MyAsyncTask extends AsyncTask<MyData, Integer, String>
{
@Override
protected String doInBackground(MyData... myDataObjects)
{
// code here calls the data access layer, passing my data to it.
// The data access layer basically does this (simplyfied for this example):
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPostRequest = new HttpPost(uri);
response = httpclient.execute(httpPostRequest);
//... clean up and return response back to doInBackground()...
return someStringText;
}
@Override
protected void onPostExecute(String value)
{
// Do something related to the value parameter
}
}
Я пытаюсь объяснить ситуацию, когда пользователь начинает отправлять данные в веб-службу, но затем получает входящий телефонный звонок во время передачи.,Когда происходит событие входящего вызова, вызывается метод onPause действия, но поскольку моя передача происходит в AsyncTask, поток AsyncTask будет продолжаться даже после завершения onPause.
Так что мне интересно, как лучше всего справиться с этой ситуацией?Позволить ли ему AsyncTask продолжать работать?Слушаю ли я событие входящего вызова и пытаюсь отменить AsyncTask?
Как влияет на это радио, используемое для передачи (WiFi или сотовая сеть)?Я считаю, что некоторые операторы (например, Verizon) не разрешают передачу данных по своей сотовой сети во время телефонного разговора.Влияет ли WiFi на телефонные звонки?
Будет ли миграция в поток внутри компонента Service иметь значение?