问题标签 [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.
android - 关于活动生命周期的问题:onNewIntent / onSaveInstanceState
我有 ActivityLanding,它调用一个名为 ActivityFolder 的活动。在意图中我使用了 putExtra("folderId", "...") (我知道 folderId 不是最好的例子)
我可以将它存储到一个变量中并很好地使用它,但如果最终我的活动被杀死以节省内存,我可能会丢失 folderId。当我的活动再次启动时,意图中的“额外内容”会被保留吗?下面的代码可以正常工作吗?
如果它确实被保留了,那么我可以使用 ASyncTask 更改它并且它仍然可以正常工作吗?
android - 使用 onSaveInstanceState 在 Android 应用程序中保持线程和连接状态?
我正在为安卓开发一个多人游戏应用程序。其中一位参与者充当主机(创建游戏实例的人),其他每个参与者都使用蓝牙连接到主机。
我的问题如下,该主机运行了一些线程以进行通信并保持所有打开的连接。我已经读到我的活动可以被临时销毁并在以后恢复,我应该为此使用 onSaveInstanceState 机制。但是,我说的是一个充当游戏“服务器”的应用程序,它具有为其他客户端提供服务的开放连接和线程,如果操作系统决定破坏我的活动,这些连接和线程会发生什么?他们被终止了吗?如果是这样,为了正确实现这一点,推荐的模式是什么,如何在 onSaveInstanceState 包上保持连接?它不可序列化。线程也是如此,我是否需要在销毁和恢复活动时重新创建和销毁它们?如果我将所有这些状态保存在某个代表游戏状态的静态类中?如果我这样做,那么操作系统不会破坏我的线程/连接吗?
我查看了 SDK 附带的示例蓝牙聊天,因此没有处理 onSaveInstanceState,因此不清楚我应该做什么。
谢谢!
android - 如何在按钮单击时开始新活动
在 Android 应用程序中,当单击另一个 Activity 中的按钮时,如何启动新的 Activity (GUI),以及如何在这两个 Activity 之间传递数据?
android - 是否在 onActivityResult() 之前调用了 onResume()?
这是我的应用程序的布局方式:
- onResume() 提示用户登录
- 如果用户登录,他可以继续使用该应用程序 3. 如果用户随时退出,我想再次提示登录
我怎样才能做到这一点?
这是我的主要活动:
这是我的登录活动:
用户成功登录后:
问题是,onResume() 在 onActivityResult() 之前被调用,所以当用户成功登录时,我的主要活动不会得到通知,因为 onResume() 首先被调用。
提示登录的最佳位置在哪里?
android - 我什么时候可以首先测量视图?
因此,在尝试设置视图的背景可绘制对象时,我有些困惑。该代码依赖于知道视图的高度,所以我不能从onCreate()
or调用它onResume()
,因为getHeight()
返回 0.onResume()
似乎是我能得到的最接近的。我应该在哪里放置如下代码,以便在向用户显示时背景会发生变化?
android - 本地/远程服务、广播接收器和意图服务的结构问题
我正在编写一个具有标准活动的 android 应用程序,但还需要始终监控传入/传出的呼叫和文本。此外,该应用程序需要每天通知用户一次信息,而无需打开活动。它通知用户的信息存储在数据库中,因此无需与活动进行通信。我已经研究了一个星期,但仍然无法决定如何去做。我的直觉告诉我,我需要一个具有持续运行的广播接收器的远程服务,但我看到的每个远程服务示例都过于复杂。谁能帮助我更好地了解我需要采取哪些步骤?提前致谢。
android - Activity.finish() 被调用,但活动仍然加载在内存中
当我在调试器上运行我的应用程序时,我得到了主线程和 3 个活页夹线程。
在单击按钮时,我调用了Activity.finish(),这看起来就像它在 UI 关闭并返回主屏幕时结束了活动。
但是,在调试器中,它仍然将主线程和 3 个绑定线程显示为“ (running) ”。
我很困惑为什么会发生这种情况。更重要的是,当我退出应用程序后再次运行它时,它会导致我的应用程序调用Activity.onResume() 。
我目前在 Activity 中重写了这些方法,但我在每个方法中调用了相应的超级函数:
- onDestroy()
- 暂停()
- onResume()
- onSaveInstanceState()
非常感谢您对此的任何帮助或建议!
android - Android DroidCharts SaveInstanceState 问题?
我使用 JFreeChart ( http://www.jfree.org/jfreechart/ ) 作为图表库。但对于 Android,我使用 DroidCharts ( http://code.google.com/p/droidcharts/ ),它基本上是适用于 Android 的 JFreechart。我在android上创建了一个图表。最初很清楚,然后我可以添加一些值来绘制并绘制在图表上。
当我将我的 android 方向从纵向旋转到横向时,由于 android 生命周期,屏幕再次为空白(它继续销毁并再次调用 onCreate)。
我需要知道如何使用“onSaveInstanceState”保存我的绘图点,以便在更改方向时在“onRestoreInstanceState”上再次创建。? 任何代码片段都会有所帮助。谢谢
android - 如何在销毁创建周期之间保存 tabhost 选项卡
应用程序有一个通过 TabActivity 管理的 tabhost。它可以选择在运行时添加选项卡。
假设在运行时添加了 5 个选项卡,并显示了不同的活动。
当我旋转屏幕时,活动会经历破坏和创建的循环。我想保持用户在运行时添加的选项卡在此周期内可用。
android - Android 服务丢失 ArrayList
编辑:这是PasteBin 的来源。我觉得我可能需要重新设计整个服务.. :(
我是RingPack的开发者。基本思想是在后台启动一个服务,负责为用户切换铃声。我在丢失对服务中的 ArrayList 的引用时遇到问题。我想我可能误解了生命周期是如何工作的。我的意图是在用户从 Activity 中选择一个包时启动它。
Intent i = new Intent(RingActivity.this, RingService.class);
i.putExtra(RingService.ACTION, RingService.PACK_SET);
i.putExtra(RingService.PASSED_PACK, currentPackId);
RingActivity.this.startService(i);
我告诉服务将默认通知音设置为与“currentPackId”对应的包的第一个音。
当用户想要关闭 RingPack 时,禁用是这样完成的:
Intent i = new Intent(RingActivity.this, RingService.class);
RingActivity.this.stopService(i);
Toast.makeText(RingActivity.this.getBaseContext(), RingActivity.this.getString(R.string.ringPackDisabled), Toast.LENGTH_SHORT).show();
所以服务的 onCreate 看起来像这样:
然后将其传递给 onStartCommand,后者返回 START_NOT_STICKY(因为我将手动创建和销毁服务),后者将其传递给 handleStart()。
isSdOk() 方法只检查 SD 卡是否已安装,因为铃声存储在其上。initControl() 只是保存用户的默认铃声,以便我们可以在他们禁用我们时将其归还。setPack() 方法如下所示:
音调 ArrayList 是我一直在失去的。这是它被初始化的地方。它包含一个包中所有启用的铃声的 ID。我看到的 NullPointerException 在 swapTone() 中:
我希望它起作用的方式是,如果 setPack() 还没有调用 swapTone() ,则永远不会被调用。同样,我的用户不断收到此错误,但我自己无法重现它。任何帮助将不胜感激。我为代码墙道歉,但我很困惑。也许我没有正确使用服务的概念?