Articles of 生命周期

Flutter上的小部件的onResume()和onPause()

现在,一个小部件只有initeState()在第一次创建小部件时被触发,而dispose()则在小部件被销毁时被触发。 有没有一种方法来检测窗口小部件何时返回到前台? 并且当一个小部件即将进入后台时,因为另一个小部件才被预先考虑? 这相当于onResume和onPause被触发为Android,viewWillAppear和viewWillDisappear为ios

android我们的活动在堆栈中有多长时间

我担心的是,我们的活动在堆栈中会持续多久? 我的意思是,当从我的应用程序按下主页按钮,然后通过单击其图标再次启动我的应用程序时,它将重新获得我按下主页按钮的正确位置,而无需为此编写任何特殊代码。 我不知道我是否正确,我认为我的应用程序被推到了堆栈,当我启动它时,它被从服务器中拉出来。 我想知道该堆栈或存储它的任何其他地方将持续多长时间? 在按下主页按钮并使用许多其他应用程序后,是否会被其他应用程序替换?

为什么在以下情况下不会调用“onPause”?

通过该文档,在以下情况下调用“onPause”: 当系统即将开始恢复先前的活动时。 与“onStop”相比,不同之处在于: 当活动不再对用户可见时调用,因为另一个活动已恢复并且正在覆盖此活动。 但是当我长按HW-Home键并显示“最近的应用程序”时,不会调用“onPause”。 此时,我无法与原始活动进行交互,但仍然可见。 我很困惑这种情况。 请帮忙解释一下。 非常感谢你。 BR,亨利

活动生命周期?

我想我对活动生命周期和捆绑的想法 有点困惑,你能帮帮我吗? 假设用户从主屏幕打开活动A , 活动 “调用” 活动B ,填充屏幕。 在此事件上, onSaveInstanceState()在活动A上调用,然后在onPause()和onStop() 。 由于系统上当前运行的应用程序太多, andorid决定杀死托管活动A的进程。 当用户导航回活动A时 ,我们可以调用onCreate() 使用bundle(在onSaveInstaceStae()的最后一次调用期间设置)来恢复状态。 然后onStart() , onRestoreInsanceState() 和onResume()被调用, 我对吗? 然后让我们假设用户按下后退键以退出活动A. onPause() , onStop()和onDestory()在活动A上按顺序调用onDestroy()虽然可以推迟onDestroy()的调用onDestroy()在这种情况下不应该调用onSaveInsanceState() 。 当用户稍后再打开活动A然后捆绑 传递给onCreate()是null,对吧? 现在假设用户旋转屏幕onSaveInsanceState() , OnPause() , OnStop() , OnDestroy()被调用 然后onCreate()使用最后一次调用onSaveInsanceState()设置的bundle, 然后是onStart()和onRestore()。 我对吗? 我的猜测是: 当用户创建一个活动时,传递给onCreate()的bundle总是为null,并且永远不会调用onRestoreState() ,但是当系统创建它时,例如当它因内存不足或者因为旋转事件而杀死活动时,传递的bundle是最后一次调用onSaveInstanceState()设置的bundle。 我猜对了吗? 谢谢,抱歉我的英语不好。 PS:我认为onRestoreInstanceState()传递相同的bundle传递onCreate()但通常使用onCreate()恢复状态。

测试Android应用程序中的内存泄漏

我最近了解到泄漏上下文会浪费多少内存,以及如何在屏幕方向更改后使用内存转储测试此类泄漏。 应该实例化和创建新活动,销毁和收集原始活动。 但是,除非我泄漏内存并且没有看到它,否则如果它开始不同的活动并且自我毁灭,则下面的活动似乎不会被收集: public class Foo extends Activity { private Button button; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); button = new Button(this); button.setOnClickListener(new OnClickListener() { public void onClick(View view) { startActivity(new Intent(Foo.this, Bar.class)); finish(); } }); setContentView(button); } protected void onDestroy() { super.onDestroy(); button.setOnClickListener(null); Log.e(“you’re it”, “isFinishing() == ” + isFinishing()); } } public class […]

Android View生命周期

我在我的应用程序中使用SemiClosedSlidingDrawer 。 快速解释: 滑动抽屉有手柄和内容部分 内容部分在创建视图时部分打开 问题: 当我创建视图时,内容部分被充气并缓存,然后部分显示。 如果我对主要内容执行任何操作。 它反映到滑动抽屉的内容部分。 即便是部分可见。 我设法find了内容未设置为GONE的答案,因此只有接收触摸事件。 在完成所有通胀缓存后,我必须将内容设置为GONE。 所以我需要知道 哪个View创建生命周期方法称为last? 或者在哪里设置ChildView的可见性属性? 我可以在活动中引用我的slidingDrawer内容并设置为GONE它工作正常。 但应该有一个正确的方法来解决这个问题。

生命周期困境与另一种活动的方向改变

我在tabhost中有2个活动。 在Activity1中,我处理方向更改以及用户在活动之间切换正常。 当用户从Activity1切换到Activity2(通过选项卡选择),执行方向更改,然后切换回Activity1时,问题就开始了。 当Activity2可见时,我的Activity1中发生的生命周期事件有点迷失。 根据调试器,这是我的Activity1中发生的事件序列: ===方向改变=== 的onSaveInstanceState 在onPause 的onStop 的onCreate 在onStart onRestoreInstanceState 的onResume ===切换到活动2 === 的onSaveInstanceState 在onPause ===在活动2中改变方向=== 的onStop 的onCreate 在onStart ===从Activity2返回返回=== 的onResume 正如您所看到的,当我切换到Activity2时,我有机会在调用onSaveInstanceState时保存我的Activity1数据,但是我从未调用onRestoreInstanceState来恢复它。 问题 为什么android在切换到另一个活动时调用我的onSaveInstanceState,如果它不打算在切换回时调用onRestoreInstanceState? 当Activity2可见时,为什么我的Activity1中没有onSaveInstanceState / onRestoreInstanceState? 无论是否可见,我仍然必须保存/恢复数据,是吗? 在这种情况下,保存/恢复数据最安全的地方在哪里? 如果它不在onSaveInstanceState / onRestoreInstanceState中,我该如何访问该包以进行恢复? 是否有其他解决方案像其他回调我可以利用来缓解这个? 谢谢你的帮助! 格雷格

Android的Activity生命周期如何与整个应用程序相关?

这似乎没有很好地记录或我错过了,所以在我运行一堆我自己的测试之前,我想知道是否有人已经知道其中一些问题的答案。 首先,当我说“应用程序”时,我指的是扩展Application类。 http://developer.android.com/reference/android/app/Application.html 我的问题如下,有些是相关的。 当用户从应用程序中离开活动并转到另一个应用程序的活动时,即使它没有onPause(),应用程序也会以某种方式暂停。 或者在它的所有活动都被销毁之前它是否继续不受影响? 应用程序什么时候停止? 当它的所有活动都被销毁? 是否有可能在没有应用程序实例的情况下运行其中一个应用程序活动,或者如果其中一个活动执行,应用程序类是否始终存在? 如果应用程序上运行了某个进程,并且其活动全部暂停,那么该进程是否会继续运行? 应用程序是以任何方式通过轮换实现的,还是轮换只会改变活动? 谢谢

Android活动生命周期

快速提问 – 活动恢复时首先要做什么? onRestoreInstanceState或onActivityResult?

我的屏幕保护程序应用程序中的奇怪生命周期行为

我刚开发了一个屏幕保护程序应用程序,我在其生命周期中发现了一个奇怪的行为。 我的工作流程是这样的: 启动我的RegisterService ,我在其中调用registerReceiver方法来注册一个BroadcastReceiver ,它可以接收ACTION_SCREEN_OFF 。 2.在这个BroadcastReceiver的onReceive方法中,我启动一个活动作为屏幕保护程序。 3.在活动中,我编写Log.i()语句来跟踪它的运行情况。 我的问题是: 当屏幕超时或按POWER键时,屏幕关闭,系统将发送ACTION_SCREEN_OFF消息。 正如我所料,我的接收器启动屏幕保护程序活动。 但是,我发现这个Activity依次根据logcat中的输出调用onCreate() , onResume() , onPause() , onResume() 。 好像有些活动出现在我的屏幕保护程序前面并立即完成,所以我的屏幕保护程序调用onPause()然后调用onResume() 。 任何想法? 这个问题困扰我编程,请帮忙。 谢谢!