android监听app被杀死,关于android:如果App进程被杀死,bundle是如何发送到onCreate的?...

在活动生命周期图中,有一个箭头从"onstop"到"app process killed"到"oncreate"。我一直在想,现在我要做一个关于片段的小讨论;如果整个应用程序进程被破坏,OnCreate如何能够从OnStop接收捆绑包?系统是否跟踪被杀的应用程序及其活动包?我认为这就是它将如何做的,因为在那个时候,被杀死的应用程序将被零内存分配给它。

此外,从管理活动生命周期>启动活动页面的最后一段,"系统在除一个:…之外的所有情况下都调用了onPause()和onStop()之后调用OnDestroy(),并且其中一个情况没有说明内存不足。这让我觉得箭头永远不应该从OnStop转到OnCreate,因为"具有更高优先级的应用程序需要内存"。这是打字错误还是我读错了?我想我读错了,因为"可杀人"?"一般来说,活动生命周期中的移动如下:"图表。

其中一个必须是错误的,要么是活动生命周期图中的箭头,要么是"系统在除一个:…之外的所有情况下都调用了onPause()和onStop()之后调用OnDestroy()"。希望我是在断章取义。

How is it possible for onCreate to receive the bundle from onStop if the whole app process is destroyed?

它不"从顶层接收包",因为onStop()与Bundle无关。交付给onCreate()和onRestoreInstanceState()的Bundle包含onSaveInstanceState()在早期Bundle中输入的数据。该Bundle的内容跨流程边界传递给一个核心操作系统流程,该流程管理未完成活动及其任务的状态。如果相关的话,这些内容将被传递回应用程序的新进程。

Does the system keep track of killed apps and their activity bundles?

操作系统跟踪未完成的任务。在一段时间内(自上次使用后约30分钟),它会跟踪实例状态Bundle,以跟踪任务上的活动。

The system calls onDestroy() after it has already called onPause() and onStop() in all situations except one

存在多个不调用onDestroy()的情况。由于内存不足而终止进程可能会或可能不会导致调用onDestroy(),这取决于系统RAM需求的紧迫性。

OnDestroy不被调用的主要方式是当你按下Home键将其放入后台,然后用户从应用程序管理器手动将其杀死。

@托马斯赫梅什:在这种情况下,仍然可以调用onDestroy()。这取决于"应用程序管理器"是什么。最近的任务列表/概述屏幕是Android和第三方任务管理器的一部分,仍应导致调用onDestroy()。但是,设置中的"强制停止"和一些预先安装的任务管理器(不幸的是)执行"强制停止",将在不调用onDestroy()的情况下终止进程。

你是对的,应该是这样的,但我有很多次没有打电话给DEF

"有一段时间(自上次使用后大约30分钟),它…"我记录了一个int值(intent.getintextra),它是我在oncreate方法中传递给当前活动的一个束。然后我运行七到八个应用程序,直到操作系统终止了我当前的活动。我等了大约一个半小时。之后,我把我的应用程序带到前台,我看到了仍然有价值的包。这是否意味着捆绑包会一直保存到用户关闭应用程序?

@阿拉什:"直到操作系统杀死了我当前的活动"——操作系统不会杀死活动。它终止进程。"这是否意味着捆绑包会一直保存到用户关闭应用程序为止?--我不会这么想的。

@公共软件,一个活动可以是一个或多个进程。终止流程意味着收回他们的资源,而没有资源他们就无法生存。我写了杀了,因为在我的应用程序名前面的ide logcat窗格中,写了,死了。为什么在很长一段时间之后,这个包仍然有我的int值?

@阿拉什:"一个活动可以是一个或多个过程"——不,它不能。一个应用程序可能有多个进程。一个活动活在一个过程中。"为什么在很长一段时间之后,这个包仍然有我的int值呢?"--我不知道,对不起。

@通用软件,谢谢。你有时间回答这个问题吗:stackoverflow.com/questions/52425061/…

OnCreate很可能在onStop()之后调用。您可以使用onSaveInstanceState()传递包,该函数在活动或片段暂停或停止时调用。假设你有一个活动,然后按Home。同时调用OnStop和OnSaveInstanceState。在OnSaveInstanceState中,保存包以保存应用程序的状态。应用程序在后台的时间太长,因此被终止。然后,当您打开应用程序备份时,在savedinstancestate参数中,从onsaveInstanceState传递给oncreate的bundle将被重新创建。更多详情请参见官方文档https://developer.android.com/training/basics/activity-lifecycle/recreating.html

感谢您向我介绍开发人员的网站开发>培训>重新创建活动。它确实有一个非常有用的句子(除了其他有用的句子)。…然后,尽管实际的活动实例已不存在,系统仍会记住它的存在,这样,如果用户导航回它,系统将使用一组保存的数据创建活动的新实例。"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SwipeBackLayout 是一个支持屏幕上下左右滑动返回上层 Activity, 关闭当前 Activity, 类似简书 App。效果图:示例代码:public class DemoActivity extends SwipeBackActivity implements View.OnClickListener {     private int[] mBgColors;     private static int mBgIndex = 0;     private String mKeyTrackingMode;     private RadioGroup mTrackingModeGroup;     private SwipeBackLayout mSwipeBackLayout;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_demo);         changeActionBarColor();         findViews();         mKeyTrackingMode = getString(R.string.key_tracking_mode);         mSwipeBackLayout = getSwipeBackLayout();         mTrackingModeGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {             @Override             public void onCheckedChanged(RadioGroup group, int checkedId) {                 int edgeFlag;                 switch (checkedId) {                     case R.id.mode_left:                         edgeFlag = SwipeBackLayout.EDGE_LEFT;                         break;                     case R.id.mode_right:                         edgeFlag = SwipeBackLayout.EDGE_RIGHT;                         break;                     case R.id.mode_bottom:                         edgeFlag = SwipeBackLayout.EDGE_BOTTOM;                         break;                     default:                         edgeFlag = SwipeBackLayout.EDGE_ALL;                 }                 mSwipeBackLayout.setEdgeTrackingEnabled(edgeFlag);                 saveTrackingMode(edgeFlag);             }         });     }
Android应用开发》实验报告 实验序号:06         实验项目名称:利用导航图标实现层级式导航 "学  号" "姓  名" "专业、班 " " "实验地点" "指导教师" "实验时间 " " "实验目的及要求 " "(1)熟悉Eclipse集成环境的开发步骤; " "(2)了解如何实现层级式导航; " "(3)掌握如何利用导航图标实现层级式导航。 " "二、实验设备(环境)及要求 " "1、winXP虚拟机; " "2、Eclipse集成开发环境。 " "三、实验内容与步骤 " "(1)修改新建项目的res/layout目录下的布局文件activity_main.xml,将" "默认添加TextView组件删除,然后添加一个id为next的按钮,设置显示文字" "为"奋斗"; " "(2)在MainActivity的onCreat()方法中,获取布局文件中添加的按钮,并" "为其设置单击事件监听器,实现启动另一个Activity功能; " "(3)创建详细页面Activity布局文件,名称为activity_detail.xml,在该" "文件中主要添加一个文本框组件,显示关于奋斗的详细信息; " "(4)创建DetailActivity,并重写它的onCreate()方法和onCreatOptionsM" "enu()方法,并且在onCreated()方法中,添加代码控制导航图标的显示; " "(5)重写onOptionsItemSelected()方法,实现通过调用NavUtils.getPare" "ntActivityName()方法;检查元数据是否指定了父Activity,如果指定,则" "调用navigateUpFromSameTask()方法导航至副Activity; " "(6)在AndroidManifest.xml中,使用<activity>标记的子标记<meta-data" ">配置Activity的父Activity " "(7)运行实例,查看实验结果。 " "四、程序调试(结果及分析) " " " "五、总结与体会 " "通过本次实验,知道了如何设计一个层级式导航,并设计导航栏返回按钮," "使得可以从子Activity返回到父Activity,安卓开发的能力更强了。 " "六、教师评语 "成绩 " "签名: " " "日期: " " 附关键代码: 1. Xml代码: 2. <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </com.google.android.material.appbar.AppBarLayout> <Button android:id="@+id/next" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginTop="50dp" android:text="关于理想" /> 2. Acivity代码: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); Button btn=(Button)findViewById(R.id.next); btn.setOnClickListener(new View.OnClickListener() { @
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值