Как сохранить состояние экземпляра AsyncTask на Android - PullRequest
1 голос
/ 22 августа 2011

Моя программа записывает сетевой трафик с помощью команды tcpdump, _initTask выполняет команду tcpdump.
Я теряю объект _initTask при выходе из приложения,
после возврата в приложение я не могу добраться до объекта _initTaskбыть в состоянии остановить задачу.
Как сохранить состояние экземпляра _initTask?

protected InitTask _initTask;

public void OnClickRecord(View view) throws IOException {
    ....

    Log.e("AndroLoad class::OnClickRecord", "AsyncTask will start");
    _initTask = new InitTask();
    _initTask.execute(this);

    } else {
        ....
    }

}

Могу ли я сделать это с onSaveInstanceState(Bundle) или OnPause()?если да, приведите пример.

1 Ответ

0 голосов
/ 22 августа 2011

Моя программа записывает сетевой трафик с помощью команды tcpdump

Android не подходит для запуска программ командной строки.

_initTask выполняет команду tcpdump

Почему? tcpdump - это команда. Он работает в своем собственном процессе. Он будет работать бесконечно, либо до тех пор, пока определенное количество пакетов не будет перехвачено, либо до тех пор, пока вы не отправите ему SIGINT или SIGKILL. AsyncTask не имеет смысла в этом сценарии.

Я теряю объект _initTask при выходе из приложения

Конечно. Вы должны остановить tcpdump в onDestroy() любого компонента, который разветвлял этот процесс.

Как сохранить состояние экземпляра _initTask?

Вы нет. Вы должны остановить tcpdump в onDestroy() любого компонента, который разветвлял этот процесс.

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