问题标签 [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 - onResume 中的 NullPointerException,与 AdMob 相关但不知道原因
我的应用程序的以下代码中出现空指针异常:
我无法复制这个问题,我已经在模拟器、galaxy S2 设备和 ZTE 刀片上使用了我的应用程序中的所有功能,但我找不到任何问题。
我收到很多用户报告,但他们没有说明原因,只是当他们尝试打开它时它会强制关闭。
也许我没有正确使用android生命周期?
作为一种解决方法,我将 AdMob 的内容封装在 try/catch 中,这样它就可以通过了。
有任何想法吗?
android - 使用多个Activity时,Activity进入前台后保留数据如何处理?
目前我对 Android 的生命周期管理有点困惑。Activity 回到前台后,至少有 4 种可能恢复保留的数据:
Android 处理:如果内存足够,Android 会在 Activity 重启后存储和恢复重要数据(选中的单选按钮、EditText 的文本、-...等),用户的状态与 Activity 进入之前的状态相同背景。
onPause, onResume:覆盖 onPause 并将重要数据保存到数据库或文本文件中,并在下次执行 onResume 时恢复。
onSavedInstance(Bundle), onRestoreInstance(Bundle):我可以将数据作为键值对保存到包中,并在执行 onRestoreInstance 后恢复它们。
onRetainNonConfigurationInstance()、getLastNonConfigurationInstance():我在一个大对象中处理所有存储问题,并在执行 onCreate 时读取 getLastNonConfigurationInstance()。
尽管哪种方法最好是令人困惑的,但我想它依赖于开发经验来知道何时使用哪种可能性。如果你有一些很好的例子,我会很高兴,但这不是我的问题。我想知道当我有不同的活动并且一个活动在后台暂停时会被Android杀死时如何处理所有这些:
就我而言,我有一个 MainActivity 和一个 MessageActivity。MessageActivity 由一个 ViewSwitcher 组成,该 ViewSwitcher 由两个状态组成。状态一是单选按钮选择列表。状态二是带有两个按钮(发送和中止)的 EditText。当我对每个状态进行猴子测试时,点击 Android 主页按钮,然后重新启动应用程序,当我将处理留给 Android 时,具有正确状态和旧数据的正确 Activity 会进入前台。所以这行得通。
但是当Android在后台销毁MessageActivity时会发生什么:如果我使用Android方式,数据会丢失,我猜MainActivity(而不是MessageActivity->state(1或2))将在我重新启动应用程序后启动(是对吗?)。因此,当我想保留 MessageActivity 的数据时,我必须使用其他三种可能性之一。
当应用程序入口点(因此 MainActivity)与最后一个活动 Activity 不同时,如何巧妙地做到这一点。问题是我必须以 ViewSwitcher 的特殊状态恢复一个特殊的 Activity。我可以在 onStart() 或 onResume() 方法中使用 startActivity(Intent) 从 MainActivity 启动 MessageActivity (因为 MainActivity 可能是入口点),但随后我在生命周期管理中遇到了很多逻辑问题。由于这个事实,我认为这不是正确的方法。
但是,这样做的正确和最佳方法是什么?
android - 最佳实践:管理片段之间的 android 数据库引用
如何处理显示数据列表的片段和在后台更新数据的不同线程/类之间的引用。因此,我需要能够通过 Observer-inf 或类似的东西从片段外部强制更新。
目前,我正在使用虚拟工厂类根据我的默认设置创建一个新的 SqlLiteDatabase 对象。
然后我从每个片段中调用它并设置适配器,这同样适用于数据插入器线程。要关闭数据库,我会覆盖我的活动的 onDestroy() 并调用:initFor(this).close(); .
这非常难看,并且在方向更改时失败。我正在考虑 SQLiteOpenHelper 但我不知道它将如何帮助我。
android - 图像不会在将屏幕方向从垂直旋转到水平或反之亦然时出现?
我使用意图从 SD 卡中选择了一张图像,在选择图像后,我在图像查看器中显示了该图像并且它正在显示,但是当我旋转屏幕时,所选图像没有出现,帮帮我?
我使用了浏览屏幕的意图-
并展示它
java - Android socket.close() 导致“系统调用被取消”?
我的 MainActivity 启动另一个名为 UdpListener 的线程。在 onResume 中,线程将被启动(这有效),在 onPause 中它应该停止,但是 socket.close() 在 LogCat 中导致错误消息“系统调用被取消”。UdpListener 本身在 JUnit 测试中工作正常,所以这一定是某种 Android 问题。
这些是我的线程的相应方法:
MainActivity.onPause():
else 分支的 serverSocket.close() 将被执行并导致 LogCat 条目,但为什么呢?
更新
也许 Dalvik 将此识别为错误,因为 close() 在当前阻塞在“接收”中的每个线程上抛出 SocketExceptions,但我不确定此异常是否与此问题有关。
http://docs.oracle.com/javase/1.4.2/docs/api/java/net/DatagramSocket.html#close()
android-intent - 每当调用 startactivityforresult 时,Android 都会杀死我的应用程序
好吧,在我的应用程序中,我使用默认相机和 Android 画廊 startActivityforResult 作为;
我也能赶上 onActivityResult 。但是,如果内存不足并且我启动了此活动,我会体验到系统正在杀死我的父活动,即使活动返回一个值,我也会丢失所有局部变量(并且再次调用 onCreate())。只有 onResume() 应该被再次调用。
我试了几次,我很确定它与内存问题有关。如果有足够的内存进程成功执行。我怎样才能防止这种行为?
由于Android不会在前台杀死应用程序,我还可以使用此功能吗?我认为我的问题与这个几乎相似。
解决方案
除了Yahel提供的解决方案外,还可以使用以下方法。
android - Android - 网络数据操作时如何处理来电
我的应用程序有一个功能,当在菜单中选择一个选项时,它会向 Web 服务发送一些数据。为此,我有一个 Activity,它在选择项目后执行 AsyncTask。
以下是一些简化的示例代码,以降低演示的复杂性。sendDataToWebService() 方法在选择事件上被调用:
我试图解释用户开始将数据发送到 Web 服务但随后在传输过程中收到来电的情况。当来电事件发生时,会调用活动的 onPause 方法,但因为我的传输发生在 AsyncTask 中,所以即使 onPause 完成,AsyncTask 线程也会继续。
所以我想知道处理这种情况的最佳方法是什么?我让它 AsyncTask 继续运行吗?我是否监听来电事件并尝试取消 AsyncTask?
用于传输的无线电(WiFi 或蜂窝网络)对此有何影响?我相信一些运营商(例如Verizon)不允许在电话交谈期间通过他们的手机网络传输数据。WiFi会以某种方式受到电话的影响吗?
将其迁移到服务组件中的线程会有所不同吗?
android - onsaveinstance() 方法包中的数据存储在设备上的什么位置?
1) onsaveinstance() 方法包中的数据存储在设备上的什么位置?它是存储在 data/data 目录中还是存储在 sqlite DB 或其他地方?
android - Android Activity 的 onPause() 和 onStop() 有什么区别?
从这里的 android 文档http://developer.android.com/reference/android/app/Activity.html,它说“活动进入前台”将调用onPause()
,“活动不再可见”将调用onStop()
。
“活动进入前台”与“活动不再可见”不一样吗?你能告诉我它们之间有什么区别吗?
android - Android-为什么会发生这种情况(“尚未创建内容”错误)
这是对这个问题的跟进:Android - 为什么这告诉我“尚未创建内容视图”?
因此,以下代码会引发错误:
但是,如果我在布局中添加一个按钮并将代码放在 OnClick 方法中,它会完美运行。像这样:
为什么会发生这种情况。我知道它必须与片段生命周期有关,但是什么?我该如何规避这一点,以便在片段打开时填充列表列表视图,而不仅仅是在我单击按钮时?
谢谢
编辑:这是主要活动
和片段 XML