问题标签 [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 投票
5 回答
29067 浏览

android - How to handle AsyncTask onPostExecute when paused to avoid IllegalStateException

I appreciate the numerous postings regarding AsyncTask on a rotation change. I have the following problem when using the compatability lib and trying to dismiss a DialogFragment in onPostExecute.

I have a fragment which fires of an AsyncTask which displays a progress DialogFragment, then in onPostExecute dismisses the dialog and then potentially throws up another DialogFragment.

If when the progress dialog is being displayed I put the application into the background I get the following for my fragment:

1) onPause

2) onSaveInstanceState

3) onPostExecute in which I try to dismiss and invoke a dialog.

I get an IllegalStateException because I'm trying to effectively commit a transaction when the activity has saved its state and I understand this.

On a rotation I've assumed (perhaps incorrectly) that I wouldn't get an onPostExecute until the activity has been recreated. However, when putting the application into the background I assumed (definitely incorrectly) that the onPostExectute wouldn't get called while the fragment/activity was paused.

My question is, is my solution to simply detect in onPostExecute that the fragment/activity is paused and simply perform what I need to do in onResume instead? Seems somewhat ugly to me.

Thanks in advance, peter.

Edit 1

Need to support 2.1 and above

Edit 2

I have considered showing the dialog using FragmentTransaction:add and FragmentTransaction:commitAllowingStateLosshowever this isn't without its problems.

0 投票
2 回答
38619 浏览

android - Android 片段 onCreateView 与 onActivityCreated

我知道片段的视图层次结构必须在 onCreateView 中膨胀,但是 onCreateView 中可以有哪些其他功能与应该等待 onActivityCreated 什么?我当前的实现对所有内容都使用单独的活动,典型的活动在其 onCreate 方法中完成大部分工作,包括膨胀视图、设置内容视图、使用数据初始化各种小部件、设置侦听器等。

那么这可能全部移到 onCreateView 中,还是应该将某些函数放入 onActivityCreated 方法中呢?

0 投票
6 回答
1879 浏览

android - Android 应用程序组件销毁和重建的细节

有人可以将我推向有关以下内容的一些具体,值得信赖(最好是简洁)的信息:

  1. 组件被系统销毁和(如果适用)重新创建的顺序(片段、活动、活动的线程/异步任务/定时器、静态数据(何时卸载类?)、其他类中的线程/异步任务/定时器、宿主 TabActivity、 ActivityGroup,绑定本地服务,应用程序,进程)当应用程序在后台和前台时。
    在什么时候可以停止销毁(返回应用程序时会遇到哪些状态 - 例如“包括应用程序对象在内的所有内容都已销毁,进程处于活动状态”?

  2. 是否有可能(在不修改 Android 的情况下)以编程方式自己造成相同类型的破坏,以便与系统何时执行此操作时无法区分,或者当我们自己选择释放内存(由 onLowMemory 触发)时是否需要单独的机制?

  3. 1) 中所有场景的可靠再现步骤(junit.framework 会这样做吗?我还没有调查过)?

  4. 如果用户长时间离开一个任务,系统会清除该任务除根Activity之外的所有Activity。当用户再次返回该任务时,只恢复根Activity ”:这是除了流程/组件之外生命周期/销毁,还是与之相关?

我已经阅读了各种来源提供的信息,这些信息通常不完整且具有误导性,有时甚至是不正确的。
我承认,我浏览了文档的某些部分,所以我可能遗漏或误解了某些内容。

[编辑] 为了避免误解:我要问的是 Android 破坏组件以释放内存,绕过Activity.onDestroy。
当我将应用程序置于后台并稍后返回时,将发生以下序列之一:

  • onPause、onStop、onRestart、onStart、onResume
  • onPause、onStop、Application.onCreate、onCreate(notNull)、onStart、onResume

[EDIT2] 赏金开始了。需要有关以下方面的可靠信息:活动、片段、应用程序、绑定(可能是远程)服务、流程。
部分/全部破坏场景。见第 1 点。

0 投票
3 回答
13600 浏览

android - 执行重新创建方法后未恢复的活动暂停

我有一个 HoneyComb 项目,在我的主 Activity 的 onResum() 方法中使用 recreate() 方法后出现错误。

我创建了一个新项目来向您展示发生了什么。

您可以在http://xp-dev.com/svn/RecreateError/trunk/找到它

我不知道我的错是什么,但我启动了 Activity 并记录了 Activity 的生命周期。结果:

现在我按下操作栏图标来激活重新创建标志并更改为其他应用程序...

并返回我的活动,激活重新创建标志,在 onResume() 处将完成重新创建()。

暂停?但是我的活动是可见的,我做错了什么?正确的状态不是 onResume()?

现在,如果我更改为另一个应用程序,我会收到错误消息。

感谢您的宝贵时间,并为我糟糕的英语感到抱歉。


目前我不明白 File Manager HD 之类的应用程序是如何执行此操作的。

两个Activity:以PreferenceFragment为主要内容的Main Activity A、Activity B。

一个在 Holo 和 Holo.Light 之间改变主题的选项,Activity B 用OnSharedPreferenceChangeListenerPreferenceFragment 中的方法改变,但是当我们回到 Main Activityrecreate()方法onResume()失败时,怎么做?

我很困惑。对不起。

0 投票
2 回答
154 浏览

android - 活动开启后恢复正常工作流程

举个简单的例子,我有一个应用程序,它显示一个 HomeActivity,这个活动可以导致一个 RssListActivity(列出 RSS 项目),它可以导致第三个 ItemDetailActivity,它只是提供我的 RSS 项目的详细视图。某些通知可能会导致在定义的文章上打开 ItemDetailActivity。

我的观点是,在通知的情况下,要恢复正常的工作流程,即当用户单击后退按钮时,他会被带到 RssListActivity,而再次单击后退按钮会被带到 HomeActivity。

当然,我真的不想在这些活动中的每一个上覆盖自定义 onKeyDown() 。

0 投票
6 回答
14832 浏览

android - 恢复活动时防止对话框多次打开

在我的 Android 应用程序中,为了询问用户他/她是否想恢复当前游戏,我会在主游戏活动上显示一个对话框,说“你想恢复当前游戏吗?是 - 否”。

问题是,如果我在不回答对话的情况下多次恢复此活动,那么我会得到几个对话,彼此叠加,这显然不是我的目标。

我可以使用布尔变量轻松避免这种行为,但我想知道 Dialog 类是否有一种防止被复制的选项或类似的东西。

0 投票
3 回答
10121 浏览

android - Android:使用支持片段管理器时复制片段

我对片段有一个非常奇怪的问题。我使用最新的支持库。我也使用 Google 在他们的IOSCHED 项目中使用的类似代码

但是我在旋转后重新创建活动时遇到问题。在销毁并再次创建活动后,我调用管理片段事务的方法(在 onStart 方法中)。此行仅调用一次,但会创建片段 TWICE !

这是我的活动方法:

和我的日志:

所以每次旋转后碎片的数量都会增加。

旋转后,它会在进入我的 onStart 方法之前恢复片段,并且我的 onStart 方法会在同一个 Frame 布局容器中创建第二个相同的片段。但是它在哪里恢复了第一个片段?我想禁止它。或者我应该改变我的“如果”来测试它是否已经创建?但我不知道如何确定它。看起来空测试没用。

add()我还通过将方法替换为replace(). 之后,片段的数量不会增加,并且每个片段在onStart创建新片段之前被销毁。但这在一些片段中造成了严重的问题,我在他们的 onCreate 方法中启动了一些后台进程......

请帮帮我...我真的不知道该怎么办。非常感谢您的任何建议或想法!

0 投票
1 回答
868 浏览

android - 当应用程序进入后台时,它的静态实例可能会被清除吗?

存储应用程序全局数据

有人说,当任务进入后台时,android会清除单例实例。这是真的吗?

我意识到,当我尝试杀死前台任务(通过使用 DDMS)时,应用程序会自动重新启动它。一定有一些守护进程,不是吗?

当然,重新启动前台应用程序对我来说是安全的,因为当进程重新启动时,我可以通过调用应用程序的 onCreate 来重新初始化我的应用程序。

但是我对后台任务/应用程序感到困惑。android会杀死后台任务并以与前台应用程序相同的方式重新启动它吗?(我尝试杀死后台应用程序,它在没有重启的情况下退出)。或者dalvik会清除并回收静态实例?

如果dalvik真的很清楚singlton,我该如何避免呢?

0 投票
1 回答
6728 浏览

android - 刷ViewPager时Fragment不调用onSaveInstanceState?

我的 ViewPager 出现问题,我的 ListView 正在失去它的滚动位置。

ListView 的状态可以使用以下方法轻松存储和恢复:

然而问题是当片段被刷卡onDestroyView()时被调用但从不调用onSaveInstanceState (Bundle outState)

旋转屏幕等可以ListView很好地恢复状态,但是滑动我无法弄清楚如何正确恢复列表。

0 投票
6 回答
46907 浏览

android - 在 Android 中使用 Fragments 而不是 Views 有什么好处?

AndroidFragments. 昨天我这样做并成功实现Fragments了自定义类的数据可视化。

我的问题是:Fragments与简单地从自定义对象获取视图相比,使用它有什么好处,并且仍然支持 API 1.5?

例如,假设我有类 Foo.java:

这两种方法在一个 Activity 中创建和使用都非常简单,比如说,有一个List<Foo>要显示的(例如,以编程方式将每个添加到 a ScrollView),所以它们Fragments真的很有用,或者它们只是过度美化的简化得到一个视图,比如通过上面的代码?