问题标签 [android-lifecycle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
238 浏览

android - 新添加的指定为 Main 的 Activity 并不总是显示为“Main”Activity

请允许我解释一下我的困境。

我一直在构建一个应用程序,它会立即进入我的MainActivity.class. 我在文件中声明了这个活动AndroidManifest.xml

然后我意识到我想在我的应用程序中添加一个登录活动,所以NewMainActivity.class需要一个。我已经能够成功实施这个新活动。我将<intent-filter>旧的更改MainActivity.class为以下内容:

然而,这是我的问题出现的地方。

当我在登录页面 ( ) 上按返回键时,NewMainActivity.class它会通过onPause()onStop()onDestroy()方法。当我再次启动应用程序时,登录页面 ( NewMainActivity.class) 未显示,MainActivity.class而是显示旧页面。

谁能猜出我仍然缺少/做错了什么?在我看来,它现在应该总是从登录页面开始。让我知道代码示例是否会有所帮助。

0 投票
8 回答
2035 浏览

android - 在用户通过设置强制退出后,是否可以知道应用程序是否正在启动?

我想知道,可能在我的活动的 onCreate() 中,如果应用程序之前按照正常的主页/返回按钮关闭,或者用户是否实际进入 Android 设置并选择强制关闭。

是否可以区分这两种情况?

编辑:

我想我可能没有很好地解释我的意思。我已经阅读了活动生命周期文档,我对此非常了解。

基本上,我只想知道活动是什么时候创建的,用户之前是否进入过 Android 设置并点击了强制停止。如果应用程序被强制停止,我想采取行动(特别是在启动时显示启动画面)。

下面的很多答案都说我可以在 onStop() 或 onDestroy() 中放置一个标志,并且如果用户点击强制停止,这些方法将不会被调用。问题是这些方法在到达那一点之前已经被调用了,因为这个序列:

  1. 应用处于活动状态,正在使用
  2. 用户点击返回按钮(onStop()、onDestroy() 调用)或主页按钮(onStop() 调用)或最近的应用程序按钮(onStop() 调用)
  3. 用户进入安卓设置,点击强制停止

在这种情况下,我会将标志放入 onStop() 上的共享首选项中,但随后用户点击强制停止,并且标志在 onCreate() 中仍处于活动状态。

除非用户在设置中点击了强制停止,否则我不想显示启动画面。我知道这不是应该做的……但这个决定不是我做的。

0 投票
1 回答
2663 浏览

android - 活动生命周期

我试图了解一个活动的完整生命周期。

所以我在谷歌上搜索了很多关于活动生命周期的教程,但是在所有教程中我都没有在生命周期图中找到这些方法:
1. OnContentChanged()
2. OnPostCreate()
3. OnPostResume()
4. OnWindowfocusChanged()
5. OnuserLeaveHint()
6. OnUserInteraction()
7.OnDetachedFromWindow()

我想知道为什么这些方法不包含在 android 文档的活动生命周期图中。

还有一个问题:
当第一次创建活动时,系统调用该OnContentChanged()方法作为第一个方法,系统的最后一次调用是OnDetachedFromWindow()活动被杀死时的方法,但是android文档说活动的整个生命周期发生在OnCreate()和之间OnDestroy()

0 投票
2 回答
171 浏览

java - 即使在我“退出”我的应用程序之后,怎么可能在 DDMS 中与我的应用程序进程“交互”?

现在,我知道在 Android 中没有“退出”应用程序这样的事情。我的意思是,即使在该应用程序中的所有活动都被销毁之后,与应用程序对应的进程也会保留在内存中。(为简单起见,让我们将服务等排除在外)。只有当系统决定这样做以回收内存时,该进程才会被终止。

但是,一旦我的所有活动都被销毁,我会假设与我的应用程序对应的进程不再“活动”。我的意思是,由于我的应用程序没有做任何工作,我假设该过程不再执行分配。这个假设正确吗?

我使用了 Eclipse ADT 通过 Eclipse ADT 提供给我的简单默认HelloWorld示例,New Android Project Wizard发现情况并非如此。即使在我关闭应用程序后,我仍然可以在 DDMS 中跟踪分配情况。谁能解释这个原因?

0 投票
1 回答
623 浏览

android - 仪表:控制生命周期

如何使用 Instrumentation 从 TestCase 中控制 Android Activity 的生命周期?

官方文档中,声明“生命周期控制:通过检测,您可以使用测试用例类提供的方法启动、暂停和销毁被测活动。”。当然,使用这个测试用例,Acitivity 会在调用 getActivity() 时自动创建,并在每个测试用例之后停止。但是如何从外部控制生命周期以检查所有生命周期方法是否正确实现?

生命周期方法 onActivityXXX 只是帮助调用相应的方法,但不会导致 Activity 暂停或停止。谁能帮助并告诉我我必须使用哪些方法?

是否有任何方法可以测试 Android 应用程序的生命周期实现?

0 投票
2 回答
6855 浏览

android - 对超类方法的调用应该是第一条语句吗?

可以在该onActivityResult(int requestCode, int resultCode, Intent data)方法中读取语音识别的结果,如本例所示。此方法覆盖类中的相同方法Activity:为什么对超类方法的调用不是第一条语句?

0 投票
2 回答
282 浏览

android - Android 构造函数

因此,在编写了一段时间的 android 应用程序(1 个上传到市场,有 3k+ 活跃安装和 4,7 评级)之后,我开始想知道,我怎样才能让我的应用程序更加出色。我意识到,我无法真正添加任何真正新的、改变世界的功能,所以我开始检查性能,以及如何优化几乎所有内容,如何找到最佳的 cpu/内存使用率等等。

无论如何,我发现 onCreate 会在旋转屏幕的情况下运行,这很符合逻辑,但是有一些(大)计算,我肯定不需要在每次旋转后重做。其中之一是遍历具有 6500 行、有 4 列的 csv,其中 2 总是包含一些数据,其中 2 并不总是。带有数据的 2 列将用于自动完成适配器,另外 2 列对于功能是可选的,但仍需要初始化。目前,这是在 asynctask 中运行,在 onCreate 结束时触发,在我的 HTC Desire S 上大约需要 3 秒,它有一个相当好的 CPU,所以预算较低的设备在每次旋转后会有更长的初始化时间,即当然不是我想要的……它不会使 UI 崩溃,但在这几秒钟结束之前不会有任何自动完成功能。

SO:我的问题是,我可以在一些单独的方法中执行此操作,例如构造函数(如在标准 Java 中),还是因为活动的特殊生命周期,这是一种不好的做法?我的意思是,我以“构造函数”运行的方式实例化我的活动,然后,我的 onCreate 将运行。在旋转的情况下,我的“构造函数”不会再次运行,但 onCreate 会。稳定仍将是我的 nr1 目标。或者,有什么好的方法可以做到这一点?正是为此而创建的东西,我不知道?我真的很想在这件事上改进很多,我真的很感激这方面的一些帮助,最好是有这方面经验的人,但欢迎任何帮助!:)

例如,如果我想以这种方式创建一个新活动,我会这样做:

所以构造函数运行,结束如下:

所以这样,构造函数运行,我的变量将被初始化(不连接到任何视图等),之后,我的活动可以随时运行它的 onCreate 变量。

如果我的语法错误,请原谅我,我只是快速输入它:)

0 投票
1 回答
669 浏览

android - 返回键无限循环回到相同的活动

我正在编写一个 Android 应用程序并且有一个奇怪的问题。

我的应用程序有一个 LoginActivity,它定义了启动事件的过滤器。登录完成后,它会使用 启动“Home”活动startActivity(new Intent(LoginActivity.this, HomeActivity.class))并使用 停止 LoginActivity finish()

HomeActivity 是一个简单的仪表板,带有通知、覆盖onCreateonStart. 它还使用 AsyncThread 更新一些内容图标。

问题是这样的:如果我点击主页按钮退出我的应用程序,然后使用“最近”菜单(按住 Android 主页按钮)重新打开它,则返回键在我的应用程序中“损坏”:按下它不会完成 HomeActivity,而是循环回到相同的活动:

含义... HomeActivity <- HomeActivity <- HomeActivity <- HomeActivity ...

我没有使用任何技巧来覆盖 backstack 或 back key 行为。任何人都知道这可能是什么原因?

TIA,帕特里克

0 投票
1 回答
3006 浏览

android - Android - 片段中的自定义视图在 onResume() 中不起作用

我创建了一个自定义视图来在屏幕上画一条线。onCreateView此视图包含在片段的 xml 布局中,并在片段的方法中检索如下:

当我将mMyCustomView变量传递给片段onCreateView方法中的自定义侦听器并在侦听器类中调用类似的东西mMyCustomView.drawLine时,一切正常。

然而,当我调用mMyCustomView.drawLine片段的onResume()方法时,没有任何反应,尽管它是相同的变量和方法。

我能想到的唯一原因是,当用户与片段交互时,侦听器调用该方法,onResume()就生命周期而言,这甚至比被调用的还要晚。但是,在片段中,我不能在onResume()AFAIK 之后调用该方法。

编辑 1

这是我的自定义视图的样子:

当我调用 addLine(...) inonResume()时,即使onDraw()到达方法中 for 循环的内部,也不会绘制线。当我稍后在侦听器类(响应某些用户交互)中添加另一条线时,两条线都绘制在画布上。不知何故,在视图的父片段中 canvas.drawLine()不起作用。onResume()

编辑 2

I have added a handler, that calls the custom view's invalidate method repeatedly after the fragment has been added to the layout of the parent activity. The line still doesn't get drawn!

0 投票
1 回答
1903 浏览

android - android中的OnResume后Listview为空

在 android 中,锁定和解锁手机后,活动会暂停并恢复。那时列表视图变为空。请帮助我在 onPause 中保存值并在 onResume 中检索它...

提前致谢