2015-02-25 2 views
0

У меня возникла необычная проблема. В моем приложении для Android я регистрирую все события жизненного цикла активности в рутине. Один из моих действий должен быть закончен, когда откроется другой. Однако иногда я получаю ошибки, потому что они не закрыты. При расследовании кажется, что деятельность уничтожается, но затем перезапускается - ниже - соответствующая часть журнала моего приложения, самое последнее событие сначала:Активность Android Жизненный цикл: OnRestart вызывается после OnDestroy

dt = "16: 37: 47: 982" (1) Деятельность [ подробности работы] возобновлено

дт = "16: 37: 47: 980" (1) активность [Детали задания] перезапущен

дт = "16: 34: 54: 689" (1) активность [подробности работы ] на разрушенной

DT = "16: 34: 54: 686" (1) активность [подробности работы] остановлен

Согласно жизненный цикл деятельности OnRestart не может быть вызван после OnDestroy, см. http://developer.android.com/reference/android/app/Activity.html Все соответствующие события жизненного цикла активности регистрируются - например, OnCreate приведет к записи в моем журнале, но для этого нет никаких доказательств! Кто-нибудь видел что-то подобное? Я не знаю, что происходит! Это произошло на Android 5.0

Мои операторы журнала в базовом классе для каждого вида деятельности. Моя активность таким образом объявлена ​​(это написано в C#/Xamarin):

[Activity(Label = "Job Details")] 
public class WebViewer : BaseActivity 

Где BaseActivity содержит переопределение всех событий жизненного цикла, которые я вхожу. Например:

public class BaseActivity : Activity, IForceLogOff, ISettingsUpdated, IJobUnassigned, IDisplayUpgradeWarning 
    { 
protected override void OnDestroy() 
    { 
     base.OnDestroy(); 
     Log.WriteLog("Activity [" + this.Title + "] on destroyed", ELogType.GUI); 
     AppStorage.GetAppStorageInstance().LastGUIActivityDT = TConverting.GetCurrentDT(); 
     NoInstancesManager.DecrementCount(this.GetType().FullName); 
    } 

    protected override void OnRestart() 
    { 
     base.OnRestart(); 
     Log.WriteLog("Activity [" + this.Title + "] restarted", ELogType.GUI); 
     AppStorage.GetAppStorageInstance().LastGUIActivityDT = TConverting.GetCurrentDT(); 
    } 

etc 
} 
+2

Вы можете показать, где у вас есть ваши записи журнала. – Raghunandan

ответ

0

Существует около 3 минут между уничтожением вашей деятельности и ее перезагрузкой. Думаю, вы перезапустили его самостоятельно?

PS: Код вашей деятельности может помочь определить проблему, если таковой имеется.

Смежные вопросы