标签: application-lifecycle

创建Application时未调用LifecycleObserver.onCreate

我们有一个在创建应用程序时运行的任务,并且我们尝试将代码从应用程序对象的 onCreate 移动到它们自己的生命周期感知类。我已将ApplicationLifecycleAwareTaskRunner(a ) 添加到inLifecycleObserver的生命周期中,但它从未被调用。和被按预期调用。ProcessLifecycleOwnerApplication.onCreate()onCreate(owner: LifecycleOwner)onStart(..)onStop()

LifecycleObserver这是它无法观察事件的已知限制吗Application.onCreate()?或者我在这里缺少什么?

使用androidx.lifecycle:lifecycle-runtime-ktx:2.4.1

在应用程序对象中添加观察者。

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        // DI and other init

       ProcessLifecycleOwner.get().lifecycle.addObserver(ApplicationLifecycleAwareTaskRunner(..))
    }
}
Run Code Online (Sandbox Code Playgroud)

任务运行者:

class ApplicationLifecycleAwareTaskRunner(
    private val appCoroutineScope: CoroutineScope,
    private val myTask: MyTask
) : DefaultLifecycleObserver {

    // This is never called :( 
    override fun onCreate(owner: LifecycleOwner) {
        appCoroutineScope.launch {
            myTask.invoke()
        }
    }
...
}
Run Code Online (Sandbox Code Playgroud)

android application-lifecycle android-lifecycle

6
推荐指数
0
解决办法
689
查看次数

如何在后台杀死应用程序时执行清理?

我的应用程序在其整个生命周期中创建了一些我需要的临时文件.我最终需要处理这些文件,因此它们不会占用设备上的空间.我想我可以在应用程序退出时删除它们,但是由于引入了多任务处理,因此生命周期并不像以前那么简单.我的主要问题是:当我的应用程序进入后台并在以后被杀时,它会收到applicationWillTerminate:吗?或者只是从记忆中消失了?

当应用程序进入后台时,我无法进行清理,因为它可以在操作过程中进行后台处理,并且一旦它返回到前台就需要临时文件.我想我可以在启动时清理文件,但applicationWillTerminate:无论如何我对这种行为感兴趣.

temporary-files application-lifecycle ios

5
推荐指数
1
解决办法
1347
查看次数

applicationWillTerminate:未被调用

applicationWillTerminate:用来保存最后一分钟的东西.但问题是它永远不会被调用.如果我在方法的顶部执行类似的操作:NSLog(@"Something");它不会被调用,也不会输出到控制台.

有谁知道为什么会这样?

cocoa-touch uiapplicationdelegate application-lifecycle ios

5
推荐指数
2
解决办法
7169
查看次数

应用程序上下文被杀死但活动没有

我正在开发一个有一些活动的应用程序.一个活动开始下一个活动.要分享一些值,我正在使用一个名为MyApplication 的Application的自定义实现(我在谈论android.app.Application).
众所周知,如果需要更多空间,Android系统会杀死一个应用程序.但这会导致一个问题:

  • 我打开我的应用程序,就像任何其他应用程序一样使用它
  • 我关闭它(主页按钮)并使用其他应用程序
  • 系统会杀死我的应用程序,因为它浪费了内存
  • 当我重新打开我的应用程序时,它想要打开我使用的最后一个活动并且我得到一个强制关闭,因为MyApplication中的值为null

奇怪的是,系统会破坏我的应用程序,但它似乎保留了Activity.我真的不明白为什么会这样,因为应用程序似乎没有生命周期.

我想拥有的:
当MyApplication(整个应用程序,不仅是活动)被杀死时,我希望最后的活动也被杀死.因此,当我重新打开App时,它会启动manifest.xml提供的主要活动.
或者
MyApplication中的值是持久的,如果应用程序被销毁,不会丢失.(我说的是一些对象,所以我认为共享偏好不起作用).
我不想使用服务绑定我的活动,但有没有类似的方法告诉系统我上次使用的活动依赖于应用程序上下文?

我希望你明白我的问题是什么,有人可以帮我解决这个问题.

android application-lifecycle

5
推荐指数
1
解决办法
1378
查看次数

5
推荐指数
1
解决办法
5375
查看次数

快速应用程序恢复无法在Windows Phone 8上的密码锁定屏幕下工作

我已经在我的Windows Phone 8应用程序中实现了快速简历,并且除了以下情况外,它在每种情况下都能正常工

脚步:

1)电话被密码锁定

2)收到吐司.

3)点击吐司.

4)应用程序已激活.

5)最后在backstack上的页面打开了重置状态.

6)没有更多的导航

在快速恢复应用程序应该再接收一个带有深层链接的导航,在这种情况下缺少的吐司.

请在这里找到样品.

application-lifecycle windows-phone windows-phone-8

5
推荐指数
1
解决办法
82
查看次数

应用程序进入后台时如何检测以前的活动

我有 2 个活动:ActivityA 和 ActivityB。
当应用程序进入后台时,我想检测哪个 Activity 刚刚处于前台。
例如:活动 A 在前台 -> 单击主页按钮 -> 应用程序转到后台

onBackground: ActivityA
Run Code Online (Sandbox Code Playgroud)

Activity B 在前台 -> 单击主页按钮 -> 应用程序转到后台

onBackground: ActivityB
Run Code Online (Sandbox Code Playgroud)

我对 ProcessLifecycleObserver 感到困惑

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onEnterForeground() {
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun onEnterBackground() {
    }
Run Code Online (Sandbox Code Playgroud)

因为这里无法检测到哪个 Activity?

当我尝试使用ActivityLifecycleCallbacks它的活动生命周期,而不是应用程序生命周期时,因此无法在此处检测到后台状态。

有没有人对这种情况有解决方案?

android background application-lifecycle activity-lifecycle

5
推荐指数
1
解决办法
472
查看次数

Xamarin.Forms.Application.Current.MainPage 为 null

我有将应用程序从 iOS 迁移到 Forms 的异常情况。

我的设置是 -

  1. iOS 项目加载签名 UIViewController 和处理登录例程。MainPage 为空。

  2. 登录例程完成后,我将 XF 视图加载为 UIViewController 并将其添加到导航堆栈

var formsController = formsPage.CreateViewController();

CoreApplication.Instance.FormsController = formsController;

var CurrentNavigationController = UIApplication.SharedApplication.KeyWindow.RootViewController;

var viewControllersStack = CurrentNavigationController.ChildViewControllers;

viewControllersStack[viewControllersStack.Length - 1].NavigationController.PushViewController(CoreApplication.Instance.FormsController, true);
Run Code Online (Sandbox Code Playgroud)

那就是当 MainPage 具有值作为 Navigation 将其设置为导航页面时。

  1. 我转到后台。
protected override void OnSleep()
{
    if (Application.Current.MainPage != null)
    {
        Console.WriteLine("!!!! ---  " + Application.Current.MainPage.GetType().Name);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在获取 MainPage 的名称 - 所以值不为空。

  1. 我回到前台 => OnResume() 发现 MainPage 为空。

但我又回到了我的 XF 视图。导航在页面之间工作,一切似乎都很好。

现在唯一的问题是 MainPage 现在为 null - 一些库,如 Rg.Plugins.Popup …

prism xamarin.ios application-lifecycle xamarin.forms

5
推荐指数
1
解决办法
458
查看次数

应用程序中未调用 Lifecycle.Event.ON_DESTROY

我想在用户退出应用程序时调用一些方法(请参阅12获取帮助)。

class BaseApplication : Application(), LifecycleObserver {

    override fun onCreate() {
        super.onCreate()

        // Register observer.
        ProcessLifecycleOwner.get().lifecycle.addObserver(this)
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) 
    fun init() {
        println("*** called onCreate()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START) 
    fun LibOnStart() {
        println("*** called onStart()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP) 
    fun LibOnStop() {
        println("*** called onStop()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) 
    fun LibOnResume() {
        println("*** called onResume()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) 
    fun LibOnPause() {
        println("*** called onPause()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) 
    fun cleanup() {
        println("*** called onDestroy()")
    }
}
Run Code Online (Sandbox Code Playgroud)

这些事件都会被触发,除了ON_DESTROY

I/System.out: *** called onPause() of Activity
I/System.out: …
Run Code Online (Sandbox Code Playgroud)

android application-lifecycle

5
推荐指数
1
解决办法
3161
查看次数

Flutter 中的所有 widget 都具有“bool this.mounted”属性吗?

祝你平安

我正在研究 Flutter 的小部件生命周期,并停在布尔变量的点上this.mounted,它确实直接存在于State类中,它只能与 a 作为子类连接StatefulWidget,而永远不会/不会与 a 连接StatelessWidget

问题是 ...

是否所有小部件实际上都包含bool this.mounted变量,正如某些人在[此接受的答案本文]中所说的那样?

我在Flutter中搜索,发现这个挂载变量只在类中,然后我进一步查找,找到了类内部State调用的函数。mount()Element

StatelessWidget与类相连StatelessElement,类从ComponentElement直接继承自该类的Element类扩展而来。

我现在真的很困惑,也许我误解了这一点,我需要对此的解释!谢谢。

lifecycle application-lifecycle flutter statefulwidget statelesswidget

5
推荐指数
2
解决办法
4401
查看次数