我们有一个在创建应用程序时运行的任务,并且我们尝试将代码从应用程序对象的 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) 我的应用程序在其整个生命周期中创建了一些我需要的临时文件.我最终需要处理这些文件,因此它们不会占用设备上的空间.我想我可以在应用程序退出时删除它们,但是由于引入了多任务处理,因此生命周期并不像以前那么简单.我的主要问题是:当我的应用程序进入后台并在以后被杀时,它会收到applicationWillTerminate:吗?或者只是从记忆中消失了?
当应用程序进入后台时,我无法进行清理,因为它可以在操作过程中进行后台处理,并且一旦它返回到前台就需要临时文件.我想我可以在启动时清理文件,但applicationWillTerminate:无论如何我对这种行为感兴趣.
我applicationWillTerminate:用来保存最后一分钟的东西.但问题是它永远不会被调用.如果我在方法的顶部执行类似的操作:NSLog(@"Something");它不会被调用,也不会输出到控制台.
有谁知道为什么会这样?
我正在开发一个有一些活动的应用程序.一个活动开始下一个活动.要分享一些值,我正在使用一个名为MyApplication 的Application的自定义实现(我在谈论android.app.Application).
众所周知,如果需要更多空间,Android系统会杀死一个应用程序.但这会导致一个问题:
奇怪的是,系统会破坏我的应用程序,但它似乎保留了Activity.我真的不明白为什么会这样,因为应用程序似乎没有生命周期.
我想拥有的:
当MyApplication(整个应用程序,不仅是活动)被杀死时,我希望最后的活动也被杀死.因此,当我重新打开App时,它会启动manifest.xml提供的主要活动.
或者
MyApplication中的值是持久的,如果应用程序被销毁,不会丢失.(我说的是一些对象,所以我认为共享偏好不起作用).
我不想使用服务绑定我的活动,但有没有类似的方法告诉系统我上次使用的活动依赖于应用程序上下文?
我希望你明白我的问题是什么,有人可以帮我解决这个问题.
GA代表什么?
喜欢:1.0.0.GA - Bean验证(JSR-303)
我已经在我的Windows Phone 8应用程序中实现了快速简历,并且除了以下情况外,它在每种情况下都能正常工
脚步:
1)电话被密码锁定
2)收到吐司.
3)点击吐司.
4)应用程序已激活.
5)最后在backstack上的页面打开了重置状态.
6)没有更多的导航
在快速恢复应用程序应该再接收一个带有深层链接的导航,在这种情况下缺少的吐司.
请在这里找到样品.
我有 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它的活动生命周期,而不是应用程序生命周期时,因此无法在此处检测到后台状态。
有没有人对这种情况有解决方案?
我有将应用程序从 iOS 迁移到 Forms 的异常情况。
我的设置是 -
iOS 项目加载签名 UIViewController 和处理登录例程。MainPage 为空。
登录例程完成后,我将 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 将其设置为导航页面时。
protected override void OnSleep()
{
if (Application.Current.MainPage != null)
{
Console.WriteLine("!!!! --- " + Application.Current.MainPage.GetType().Name);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在获取 MainPage 的名称 - 所以值不为空。
但我又回到了我的 XF 视图。导航在页面之间工作,一切似乎都很好。
现在唯一的问题是 MainPage 现在为 null - 一些库,如 Rg.Plugins.Popup …
我想在用户退出应用程序时调用一些方法(请参阅1、2获取帮助)。
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) 祝你平安
我正在研究 Flutter 的小部件生命周期,并停在布尔变量的点上this.mounted,它确实直接存在于State类中,它只能与 a 作为子类连接StatefulWidget,而永远不会/不会与 a 连接StatelessWidget。
问题是 ...
我在Flutter中搜索,发现这个挂载变量只在类中,然后我进一步查找,找到了类内部State调用的函数。mount()Element
类StatelessWidget与类相连StatelessElement,类从ComponentElement直接继承自该类的Element类扩展而来。
我现在真的很困惑,也许我误解了这一点,我需要对此的解释!谢谢。
lifecycle application-lifecycle flutter statefulwidget statelesswidget
android ×4
ios ×2
background ×1
cocoa-touch ×1
flutter ×1
lifecycle ×1
prism ×1
xamarin.ios ×1