Articles of android lifecycle

在没有onpause()或onstop()的情况下调用ondestroy()的Android场景

几天前,我被要求写下调用ondestroy()的场景,而不调用onpause()或onstop()。 可能吗。 如果是,请解释。

Android:如何记录所有Activity方法调用?

我想有一个快速的方法来记录对活动调用的所有超级方法的所有调用。 我试过这个https://github.com/stephanenicolas/loglifecycle 但由于某种原因,它不适用于AppCompatActivity … 我可以要求我的IDE覆盖所有方法; 但是如何将Log添加到所有这些? 手动? 一定有办法……

适用于Android的长期服务的最佳架构

我将非常感谢有关如何处理操作系统查杀长期服务的一些指导。 业务场景: 应用程序记录BTT轨道,可能持续数小时。 它还可以在地图上显示跟踪以及相关统计信息。 应用程序用户界面使用户能够开始/停止跟踪记录并在地图上查看实时跟踪。 在开始跟踪记录之后,用户可以退出应用程序并关闭屏幕(以节省电量),并且只有服务将保持运行以保持记录更新到数据库(显示通知),直到用户再次启动活动并要求停止记录,这导致服务终止。 问题: 在可变时间(从40分钟到1个半小时)之后,录制服务在没有任何警告的情况下被杀死。 由于BTT外出可能需要几个小时,这导致跟踪录音不完整。 一些其他信息: 使用START_STICKY启动服务并获取PARTIAL_WAKE_LOCK ,并在与主活动相同的过程中运行。 以用户定义的速率从1秒到几分钟获取(并记录)新位置。 我从Android文档中了解到,这是长期运行服务的预期操作系统行为。 题: 拥有性能良好的应用程序以满足业务场景要求的最佳架构设计方法是什么? 我可以想到几个选项(我不喜欢它们中的任何一个),但我希望某人如何面对并解决类似问题的指导: 使用广播接收器(理想情况下,如果可能,连接到位置管理器)使服务仅在获取新位置时运行? 不要让用户离开主要活动(导致用户体验下降)? 如果需要,让警报广播接收器重新启动服务吗? 感谢所有能够就此主题分享一些智慧的人。

onResume()和onResumeFragments()之间的区别

FragmentActivity.onResume() javadoc: 将onResume()发送到片段。 请注意,为了更好地与平台的旧版本进行互操作,在此调用时,附加到活动的片段不会恢复。 这意味着在某些情况下,仍可以保存先前的状态,而不允许修改状态的片段事务。 要正确地与处于正确状态的片段进行交互,您应该覆盖onResumeFragments()。 FragmentActivity.onResumeFragments() javadoc: 这是onResume()的片段定向版本,您可以覆盖它以在其片段恢复的同一点执行Activity中的操作。 一定要经常打电话到超级class。 以上是否意味着平台保证 : 在执行FragmentActivity.onResume() ,片段永远不会被恢复(它们的onResume()未被调用) 在执行FragmentActivity.onResumeFragments()片段总是会被恢复(它们的onResume()被调用FragmentActivity.onResumeFragments() ? 如果没有,开发商如何正确使用并对上述内容保持警惕?

即使应用程序被销毁,AsyncTask也会一直运行?

我有一个应用程序,因为你不能在主线程上进行网络操作我正在使用AsyncTask ,所以问题是我execute() AsyncTask之后我就finish()活动,也许用户将finish()整个应用程序,所以我想知道的是: 即使应用程序关闭,只要在应用程序运行时调用了execute() , AsyncTask总是完成doInBackground()和onPostExecute() ?

是否应该对超类方法的调用是第一个语句?

可以在onActivityResult(int requestCode, int resultCode, Intent data)方法中读取语音识别的结果,如本例所示。 这个方法重写了类Activity的相同方法:为什么对超类方法的调用不是第一个语句? @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { // Fill the list view with the strings the recognizer thought it could have heard // … } super.onActivityResult(requestCode, resultCode, data); }

BroadcastReceiver的Manifest和Programmatic注册之间的主要区别

我试图理解在Manifest中注册BroadcastReceiver和以编程方式注册它之间的主要区别…… 我的理解基本如下(如果我遗漏了某些东西,会感谢有人纠正我的观点)。 在Manifest中注册: 如果需要,操作系统将神奇地查找并实例化您的类,调用onReceive()方法,无论您的应用程序的运行状态是什么 您的接收只会在每次广播时被呼叫一次(即您可以认为在清单中注册就像注册您的“class级”以接收广播一样 – 并且广播会根据需要实例化您的class级)(??) 以编程方式注册: 在代码中注册意味着您正在注册您的类的实例以接收广播消息(即,如果您的代码有点草率,并且您设法多次注册,则最终会有多个BroadcastReceiver实例都调用其onReceive()广播 要取消注册,您需要取消注册先前注册的特定BroadcastReceiver实例 如果您的应用程序被操作系统销毁,则不会为广播调用onReceive()方法 谢谢

在android中实现Socket.io的最佳方法

我计划在这个库中为基于聊天的应用程序在android中实现Socket.io。 据我所知,图书馆看起来很不错。 我想知道如何在整个应用程序中始终保持单个套接字连接? 在这里,我列出了实现的方法,其中我需要最好和最稳定的方式。 三种方式 MainApplication类扩展了Application 通过这种方式,我们有一个很好的范围,即在主线程 (或应用程序的生命周期)中维护套接字连接,并且每当从活动中需要套接字实例时我们都可以轻松获得它。 但它的主要线程也是问题所在。 它可能会阻止主线程。 BoundService 通过这种方式,我们可以将服务与活动绑定 ,我们可以简单地使用它。 在单独的线程中执行是实现IO /网络调用的方法。 但是,交叉处理转移比在同一过程中直接访问更昂贵。 独生子 在Singleton中维护连接也很有意义。 但是我们不知道实例何时被进程杀死,因为它在活动生命周期中不起作用。 如果我有意义,请帮助我。 如果没有评论出来。 编辑 我已经给出了更适合我的答案。

Android应用程序组件破坏和娱乐的详细信息

有人会把我推向一些具体的,值得信赖的(最好是简明的)有关以下方面的信息: 系统重新创建组件的顺序和(如果适用)(片段,活动,活动的线程/ AsyncTasks /定时器,静态数据(何时卸载类?),其他类中的Threads / AsyncTasks / Timers,主机TabActivity,当应用程序在后台和前台时,ActivityGroup,绑定本地服务,应用程序,进程)。 破坏可以在哪些点停止(返回应用程序时会遇到什么状态 – 比如“包括应用程序对象被破坏,进程处于活动状态的所有内容”? 是否有可能(不修改Android)以编程方式自己导致相同types的破坏,因此它与系统何时进行无法区分,或者是当我们自己选择释放内存时需要的单独机制(由onLowMemory触发)? 从1)所有场景的可靠再现步骤(junit.framework会做什么?我还没有调查过)? “ 如果用户长时间离开任务,系统将清除除根活动之外的所有活动的任务。当用户再次返回任务时,只恢复根活动 ”:这是否与进程/组件不同生命周期/破坏,还是与之相关? 我已阅读各种来源提供信息,通常不完整和误导,有时不正确。 我承认,我已经浏览了文档的某些部分,所以我可能错过了或误解了一些东西。 [编辑]为了避免误解:我要问的是Android销毁组件以释放内存, 绕过 Activity.onDestroy。 当我将应用程序放在后台并稍后返回时,将会出现以下序列之一: onPause,onStop,onRestart,onStart,onResume onPause,onStop,Application.onCreate,onCreate(notNull),onStart,onResume [EDIT2] Bounty开始了。 需要可靠的信息:活动,碎片,应用程序,绑定(可能是远程)服务,流程。 部分/完全销毁方案。 见第1点。

Android片段与复合控件

为什么要使用Android 3.0片段而不是复合控件? 可以创建一个Viewinheritance者或复合控件一次并在任何地方使用它。 我已经阅读了http://android-developers.blogspot.com/2011/02/android-30-fragments-api.html但未find答案。