【问题标题】:Android Activity Life Cycle: OnRestart being called after OnDestroyAndroid Activity 生命周期:在 OnDestroy 之后调用 OnRestart
【发布时间】:2015-02-25 09:43:23
【问题描述】:

我遇到了一个不寻常的问题。在我的 Android 应用程序中,我将所有活动生命周期事件记录为例行公事。我的一项活动应该在另一项活动打开时完成。但是,有时我会出现错误,因为它尚未关闭。经调查,该活动似乎正在被破坏,但随后又重新启动 - 以下是我的应用日志的相关部分,最近的事件首先:

dt="16:37:47:982" (1) Activity [职位详情] 恢复

dt="16:37:47:980" (1) Activity [Job Details] 重启

dt="16:34:54:689" (1) Activity [Job Details] 被销毁

dt="16:34:54:686" (1) Activity [Job Details] 停止

根据Activity生命周期OnDestroy后不能调用OnRestart,见http://developer.android.com/reference/android/app/Activity.html 记录所有相关的活动生命周期事件 - 例如OnCreate 会在我的日志中生成一个条目,但没有证据表明这一点! 有没有人见过类似的东西?我不知道发生了什么事! 这发生在 Android 5.0

我的日志语句位于每个活动的基类中。我的 Activity 是这样声明的(它是用 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
}

【问题讨论】:

  • 你能显示你的日志语句在哪里吗?

标签: android android-activity activity-lifecycle


【解决方案1】:

从销毁您的 Activity 到重新启动它之间有将近 3 分钟的时间。估计你自己重启了?

PS:您的活动代码可能有助于识别问题(如果有)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2013-07-10
    • 1970-01-01
    相关资源
    最近更新 更多