Могу ли я поместить беспорядочный код в onCreate () и onDestroy ()? - PullRequest
1 голос
/ 30 ноября 2011

Я пытаюсь использовать Flurry для моего приложения для Android. В нем говорится, что я должен поместить беспорядочный код в методы onStart () и onStop (). У меня нет этих методов в моем коде. У меня есть два действия, и оба используют только методы onCreate () и onDestroy (). Могу ли я положить в этом суматоху код? Будут ли с этим проблемы?

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

onStart и onStop являются существующими методами для Activity, как и onCreate. Если вы хотите добавить функциональность в эти моменты жизненного цикла действия , вы можете переопределить их так же, как и для onCreate.

public class MyActivity extends Activity {
    @Override
    protected void onStart() {
        super.onStart();
        FlurryAgent.onStartSession(this, "FLURRYKEY");
    }

    @Override
    public void onStop()
    {
       FlurryAgent.onEndSession(this);
       super.onStop();
    }
}

onCreate и onDestroy не являются подходящей парой методов для отслеживания сеансов Flurry, потому что onDestroy не гарантированно вызывается. См. Документацию по onDestroy. Вы можете столкнуться с ситуациями, когда приложение будет убито системой, и Flurry будет думать, что сеанс все еще продолжается.

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

3 голосов
/ 30 ноября 2011

onStart () и onStop () - это методы, которые обрабатывают часть жизненного цикла действия, поэтому вы можете без проблем добавлять их в свои действия.

@Override
protected void onCreate(...) {
    super.onCreate(...);
            ...
}

@Override
protected void onStart() {
    super.onStart();
    FlurryAgent.onStartSession(this, "your_key");
}

@Override
public void onStop()
{
   super.onStop();
   FlurryAgent.onEndSession(this);
}
...