Это очень плохая идея использовать AsyncTasks для длительных операций. Тем не менее, они подходят для коротких живых, таких как обновление вида через 1 или 2 секунды.
AsyncTasks
не следует. Если вы запустите AsyncTask
внутри Activity и вы повернете его, то Activity
будет уничтожен и будет создан новый экземпляр. Но AsyncTask
не умрет. Это одна из причин, по которой рекомендуется избегать AsyncTask
для выполнения длительных задач.
Однако, если ваша активность идет на паузе в процессе, это, вероятно, к краху, так что вы должны отменить задание в onPause()
с помощью task.cancel(true);
Если вам нужна ваша задача, чтобы выжить вашу деятельность, то вы должны использовать либо Service
или ServiceIntent
. Первый немного сложнее, поскольку вам нужно управлять жизненным циклом, но он обеспечивает большую гибкость. Второй чертовски прост, так что я могу дать вам пример здесь:
public class MyIntentService extends IntentService{
public MyIntentService() {
super("MyIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
// Background work in a worker thread (async)
// You could also send a broadcast if you need to get notified
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("whatever");
LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent);
}
}
вы можете начать, если от вашей деятельности с помощью этой команды:
Intent i = new Intent(context, MyIntentService.class);
context.startService(i);
Вот некоторые ссылки о Intent службы:
- http://javatechig.com/android/creating-a-background-service-in-android
- http://www.101apps.co.za/articles/using-an-intentservice-to-do-background-work.html
- http://www.mysamplecode.com/2011/10/android-intentservice-example-using.html
Надеюсь, это вам поможет.
Что относительно размещения кода? –
Я не могу опубликовать свой код из-за некоторых проблем .... –
без кода не может дать лучшее решение –