问题标签 [activity-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 投票
4 回答
13413 浏览

java - Android 中是否有类似于 C/C++ 中的“int main”的函数,其中包含程序的主循环?

通常在 C 或 C++ 程序中有一个主循环/函数,通常是int main (). 我可以在android Java开发中使用类似的功能吗?

0 投票
15 回答
227197 浏览

android - 从历史堆栈中删除活动

我的应用程序在用户第一次运行应用程序时显示注册活动,如下所示:

  1. ActivitySplashScreen(欢迎来到游戏,注册账号?)
  2. ActivitySplashScreenSignUp(很好,填写此信息)
  3. ActivityGameMain(主游戏画面)

因此,当用户单击每个屏幕上的按钮时,活动会以完全相同的顺序相互启动。

当用户从活动 #2 转到 #3 时,是否可以将 #1 和 #2 从历史堆栈中完全擦除?我想要这样,如果用户在#3,并点击后退按钮,他们只是去主屏幕,而不是回到启动屏幕。

我想我可以通过任务来完成这个(即在#3上开始一个新任务)但想看看是否有更简单的方法,

谢谢

0 投票
8 回答
14400 浏览

android - 如何模拟杀戮活动以节省内存?

安卓文档说:

“当系统而不是用户关闭活动以节省内存时,......”

但是如何模拟这种情况?我想调试onRestoreInstanceState(Bundle)方法,但不知道如何。

0 投票
18 回答
124390 浏览

android - 注销时,清除活动历史堆栈,防止“返回”按钮打开仅登录的活动

我的应用程序中的所有活动都需要用户登录才能查看。用户几乎可以退出任何活动。这是应用程序的要求。在任何时候,如果用户注销,我想将用户发送到 Login Activity。此时,我希望此活动位于历史堆栈的底部,以便按下“返回”按钮将用户返回到 Android 的主屏幕。

我在几个不同的地方看到过这个问题,所有的答案都相似(我在这里概述),但我想在这里提出它以收集反馈。

我尝试通过设置其Intent标志来打开登录活动,FLAG_ACTIVITY_CLEAR_TOP这似乎与文档中概述的一样,但没有实现将登录活动放在历史堆栈底部并阻止用户导航回来的目标以前看到的登录活动。我也尝试android:launchMode="singleTop"在清单中使用登录活动,但这也没有实现我的目标(而且似乎无论如何都没有效果)。

我相信我需要清除历史堆栈,或者完成所有以前打开的活动。

一种选择是让每个活动的onCreate检查登录状态,finish()如果没有登录。我不喜欢这个选项,因为后退按钮仍然可以使用,在活动自行关闭时导航回来。

下一个选项是维护LinkedList对所有开放活动的引用,这些活动可以从任何地方静态访问(可能使用弱引用)。注销时,我将访问此列表并遍历所有先前打开的活动,并调用finish()每个活动。我可能很快就会开始实施这种方法。

但是,我宁愿使用一些Intent标志技巧来完成此操作。我很高兴发现我可以满足我的应用程序的要求,而无需使用上面概述的两种方法中的任何一种。

有没有办法通过使用Intent或清单设置来实现这一点,或者我的第二个选择是保持一个LinkedList打开的活动是最好的选择?还是有另一个我完全忽略的选择?

0 投票
1 回答
1032 浏览

android - 方向改变时如何处理活动?

我正在编写一个活动,它从服务器加载数据并使用 ArrayAdapter 将其显示为列表。为此,我正在显示一个进度对话框,即加载,同时它从服务器加载所有数据。然后我在处理程序中关闭对话框。我的问题是,当我更改方向时,会再次显示进度对话框,这是不需要的,因为所有数据都已显示?

0 投票
1 回答
826 浏览

android - 为什么在停止时将 ListView 光标更改为空?

我一直在查看 CursorAdapter 实现的示例,以确保我做的一切都是正确的。

我注意到我没有做的一件事是在 Activity 的 onStop() 处理程序中对我的 CursorAdapter 调用 changeCursor(null) 。

这样做的目的是什么?如果有充分的理由,我愿意这样做,但我讨厌导航到另一个 Activity,备份到这个 Activity,然后在查询新的光标之前看到一秒钟的空白屏幕。

0 投票
2 回答
1517 浏览

android - 如何通过 Android 中的方向变化来保持动态视图的焦点?

我有一个顶部有一个 EditText 的活动和一个里面有一个 LinearLayout 的 ScrollView。

LinearLayout 在 onCreate 方法中填充一组动态视图,这些视图基于与初始 Intent 一起传递的对象。这通常是一组 EditText。

结果是一个 EditTexts 列表,每个 EditTexts 对应于不同的数据(并且正在编辑的数据集变化很大,因此需要像这样动态创建列表)。

问题是,当这些视图之一具有焦点并且方向发生变化时(例如用户翻转键盘进行输入),焦点会捕捉到 Activity 最顶部的 EditText。这肯定是不受欢迎的行为,因为用户在他/她翻出键盘时不打算在顶部的 EditText 中键入。

我怎样才能像这样动态地创建我的视图列表并且没有这种不良的焦点改变行为?

0 投票
4 回答
51698 浏览

android - 是否在 onActivityResult() 之前调用了 onResume()?

这是我的应用程序的布局方式:

  1. onResume() 提示用户登录
  2. 如果用户登录,他可以继续使用该应用程序 3. 如果用户随时退出,我想再次提示登录

我怎样才能做到这一点?

这是我的主要活动:

这是我的登录活动:

用户成功登录后:

问题是,onResume() 在 onActivityResult() 之前被调用,所以当用户成功登录时,我的主要活动不会得到通知,因为 onResume() 首先被调用。

提示登录的最佳位置在哪里?

0 投票
2 回答
1143 浏览

android - 系统如何杀死活动的概述

任何人都可以简要概述运行时何时以及如何杀死活动的情况吗?我想知道暂停和停止状态之间的区别。什么可以迫使系统破坏暂停的活动,就像它被停止一样(低内存)原因?

我认为如果由于来电(突然导致内存不足的情况)而暂停活动,系统只是更喜欢释放已停止活动的资源。但是这是怎么做到的呢?系统什么时候通过调用finish()“亲切地询问”活动,什么时候不,什么时候仍然调用onDestroy()?

0 投票
1 回答
247 浏览

android - 子活动的生命周期

如果一个活动通过 startActivityForResult() 启动另一个活动,如果父活动完成,该子活动会发生什么?