首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Activity 的 36 大难点,你会几个?「建议收藏」

Standard 模式(默认模式) 说明: 每次启动一个 Activity 都会又一次创建一个新的实例入栈,无论这个实例是否存在。...该类是一个抽象( abstract class )类, Android 提供了该抽象类的具体实 现类( ContextIml )。...举例来说,这可能发生在,如果一个前台活动在一个对话框(其他进程的)运行之后仍然是可视的,比如输入法的弹出时。 寄宿着一个服务,该服务绑定到一个可视的活动。...5.3 服务进程 服务进程是通过 startService() 方法启动的进程,但不属于前台进程和可见进程。例如,在后台播放音乐或者在后台下载就是服务进程。...这些进程没有直接影响用户体验,并且可以在任何时候被杀以收回内存用于一个前台、可视、服务进程。

79420

Activity详解

Activity四种启动模式 // Activity 的启动模式决定了激活 Activity 时,是否创建新的对象,进而将影响到 任务栈 也叫 回退栈。...在 AndroidManifest.xml 文件中,可以为每个 activity 节点配置 android:launchMode 属性,以决定该 Activity 的启动模式 ---- // 什么是任务栈...standard 模式是 android 的默认启动模式,在这种模式下,activity 可以有多个实例,每次启动 Activity,无论任务栈中是否已经存在这个 activity 的实例,系统都会创建一个新的...我们在安装这个应用的时候,系统也会启动一个PackManagerService的管理服务,这个管理服务会对AndroidManifest.xml文件进行解析,从而得到应用程序中的相关信息,比如service...而startActivityForResult()这个方法实际是通过Instrumentation类中的execStartActivity()方法来启动activity,Instrumentation这个类主要作用就是监控程序和系统之间的交互

1.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于 Android 实现滑动返回的几种方法总结

    注意:由于设置为了全透明,所以当我使用 4.0.3 版本进行开发的时候,由于活动默认的是白色的,所以当我继承这个类时,运行后的结果效果不太好,在新建的活动中能看见上一个活动的布局,这个体验感非常差,在后面的调试中...,发现只要把新建的活动设置一个其他颜色的背景就行了,比如我设置为了 gray,这样就没有了那个 BUG。...对于我们要如何实现滑动返回,我们首先需要建一个 Activity 的管理类 AppManager,这样方便我们对 Activity 的生命周期进行管理,并安全退出,所以我们需要在主活动里对每启动一个 Activity...MainActivity 类 //启动活动时,添加到AppManager,并设置返回时的动画 public void startActivity(Class<?...SlidingPaneLayout 添加内容视图 slidingPaneLayout.addView(decorChild, 1); } } /** * 是否支持滑动返回

    5.1K90

    Android 动画:手把手教你使用 补间动画 (视图动画)

    a.启动动画 Intent intent = new Intent (this,Acvtivity.class); startActivity(intent); overridePendingTransition...采用overridePendingTransition(int enterAnim, int exitAnim)进行设置 // enterAnim:从Activity a跳转到Activity b,进入...b时的动画效果资源ID // exitAnim:从Activity a跳转到Activity b,离开a时的动画效果资源Id // 特别注意 // overridePendingTransition(...(android.R.anim.fade_in, android.R.anim.fade_out); // 从左向右滑动的效果 overridePendingTransition...从上图可以看出: 以屏幕底边为X轴,屏幕左边为Y轴; 当Activity在X轴 = -100%p时,刚好完全超出屏幕到左边(位置1) 当Activity在X轴 = 0%p时,刚好完全在屏幕内(位置2)

    2.7K20

    Activity 切换动画---点击哪里从哪放大

    至于哪些动画可以兼容,哪些不行,打开 ActivityOptionsCompat 类就清楚了,这个类在 support v4包里,下面就贴张图看看: ?...(0, 0); } overridePendingTransition(0, 0) 传入 0 表示不执行切换动画,呈现出来的效果就是下个 Activity 瞬间就显示在屏幕上了,而我们又对下个 Activity...void onAnimationEnd() { BaseActivity.super.finish(); } }); } x,y 的计算,动画的实现、执行我都是写在一个辅助类里...那是否有办法在动画过程中设置为 true,动画结束之后设置为 false 呢?如果可以的话,按理来说应该正好解决问题。...动画方案来实现 Activity 转场动画有时会有些卡顿,感觉是 Activity 启动做的那一大堆事跟动画挤一起了,那 overridePendingTransition() 原理到底是怎么实现?

    4K50

    Android点将台:颜值担当

    ]详细分析 [4].Activity的[跳转动画] [5].Acticity的生命[周期源码]分析 2.Activity总览 类名:Activity 父类:ContextThemeWrapper...: 标准栈 当启动一个Activity,创建该Activity的新实例。...销毁 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity1 销毁 2:singleTop模式:顶复用栈 在启动活动时若栈顶已经是该...TASK_ID: Activity1 销毁 依次返回 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity1 销毁 4:singleInstance 单独实例栈 启用一个新的活动栈来管理这个活动...一直想总结一下Activity的启动流程(),这里从Activity的生命周期入手 本文所讲述的启动流程主要是ActivityThread的H在接收到消息之后,即handleMessage 至于消息如何传递过来的将在跨进程通信篇讲述

    13810

    TheRouter 页面跳转源码分析

    首先讲路由表的创建来源,我能找到的就是这四种: 从当前模块,通过 APT 解析@Route生成的从依赖 aar 的路由表中读取的从json文件中读取的代码添加的路由表APT生成的路由表先看第一种,最好理解的...Activity 的跳转分五个部分: 判断是否延迟跳转拦截器处理解析跳转的路由表执行跳转跳转页面参数解析延迟跳转 延迟跳转是个比较创新的设计,安装官网的说法,延迟跳转主要应用场景有两种:第一种:初始化时期...在TheRouter中,框架会暂存当前的跳转动作,在路由表初始化完成后立刻执行跳转。 第二种:从Android 8.0开始,Activity 不能在后台启动页面,这对于业务判断造成了很大的影响。...由于可能会有前台 Service 的情况,不能单纯以 Activity 生命周期判断前后台。...所有加了 @Autowired 注解的类,在编译以后都会生成一个单独的工具类,XXX__TheRouter__Autowired,这个类就是用来填充变量内容的。

    60330

    备战金九银十:BAT大厂最爱问的Android核心面试百题详细解析!

    是在 task 里面活动的。...而且每次启动一个 Activity,都会重新创建新的实例,不管这个实例在任务中是否已经存在。...37.Service 是否在 main thread 中执行, service 里面是否能执行耗时的操作默认情况service在main thread中执行,当service在主线程中运行,那在service...比如:从服务器拿回一个标识为id=1,那么当id=1的时候,我们就加载类型一的条目,当 id=2的时候,加载类型二的条目。常见布局在资讯类客户端中可以经常看到。...覆写 overridePendingTransition方法 overridePendingTransition(R.anim.fade, R.anim.hold); 80.Android与服务器交互的方式中的对称加密和非对称加密是什么对称加密

    1.2K31

    【译】Activity分割动画如何使用我的动画##

    但是我发现,最简单的实现方式,就是将他们以成员变量的形式放到一个公共区域中。所以,我创建了一个静态类用来持有子bitmap,所有的创建操作和动画逻辑,也都在这里个类里面,稍后会详细介绍。...在Activity B中显示子bitmap## 启动activity B之后,通过调用[overridePendingTransition( )](http://developer.android.com.../reference/android/app/Activity.html#overridePendingTransition(int, int))禁用所有默认Activity过度动画。...当布局填充完毕后,执行动画,把两个bitmap向外推出,从而呈现Activity布局。...下一步## 你可以将它扩展的更丰富,比如: 垂直分割 - 让Activity从两侧移出。 把Activity分割成更多的部分。 做所有你能想到的事情。

    1.4K20

    前面的注解处理器教程涉及到的 Tieguanyi 框架现在怎么样了?

    company); intent.putExtra("title", title); startActivity(intent); 仅仅是这样,还不够,所以我们还需要在 UserActivity 这个类当中去读取这些值...我们同样通过监听其生命周期来实现对用户配置好的属性的值进行保存,以保证这些属性在 Activity 或者 Fragment 重新创建时能够得以恢复。...UserActivity 时,我们都会在相应的方法当中调用 overridePendingTransition 来设置这些转场动画。..., name, title -> ... // handle result } 值得一提的是,对于在编辑用户信息时, UserActivity 的实例因各种原因(例如开发者选项中的”不保留活动...为了解决这个问题,我会在页面返回,上一个页面被重新创建时尝试替换掉失效的实例以保证回调可以正常使用,其中主要包括: 外部 Activity 的实例,这个通常没有问题。

    60610

    Android技能树 — 动画小结

    总结的图已经传到了Github上面,可以下载: AnimationSummay脑图 ---- 动画可以分为两类:Animation 和 Transition二类。 ?...这里的界面切换动画,与最刚开始的大分类的Transition不同,这里的过渡的动画用的是View动画,比如Activity的切换效果: //当启动一个Activity时 Intent intent =...); //当Activity退出时 @Override public void finish(){ super.finish(); overridePendingTransition...ViewPropertyAnimator 和 ObjectAnimator的底部都是用ValueAnimator实现的,从字面意思就可以看出是数值的动画,也就是数值的变化。...时间经历到了 N 秒的时候,我们要知道整个动画到了哪个程度,比如动画执行了50% 了。 当动画执行到某个程序的时候(比如执行了50%),这时候我们的X轴的移动距离的值具体是多少px。

    76820

    Android水波动画帮助类,一行代码实现View显示隐藏startActivity特效(0.3.1)

    让按钮收缩只需一行代码,如下: CircularAnim.hide(mChangeBtn).go(); 同理,让按钮伸展开: CircularAnim.show(mChangeBtn).go(); 以View...为水波触发点收缩其它View: CircularAnim.hide(mContentLayout).triggerView(mLogoBtnIv).go(); 以View为水波触发点伸展其它View...: CircularAnim.show(mContentLayout).triggerView(mLogoBtnIv).go(); 水波般铺满指定颜色并启动一个Activity: CircularAnim.fullActivity...用起来非常的方便,一切逻辑性的东西都由帮助类搞定。 Compile So,你可以如下compile该library了,也可以把这个类CircularAnim拷贝到项目里去。...你可以直接新建一个CircularAnim的类,然后把下面的代码复制进去就OK了。

    1K20

    速读原著-Android应用开发入门教程(Android应用程序的概念性描述)

    每一个活动都被实现为一个独立的类,并且从活动(Activity)基类中继承而来,活动类将会显示由视图(View)控件组成的用户接口,并对事件(Event)做出响应。...活动被“覆盖”的情景:Android 的活动一般都占据一个完整的屏幕,从当前活动启动另外一个活动时,另一个活动将被启动到前台(Foreground),当前活动转入后台(Background),这时活动的...在转入后台时,onStop()是否被调用取决于活动是否被完全覆盖,在新的活动有透明部分时,转入后台的活动依然“可见”,其他情况下(较多数的情况)活动均进入不可见状态(被完全覆盖)。...使用 StartService 运行服务的情景:使用这种方法启动服务,服务的 onCreate()和 onStart()这两个方法将被调用,服务会在后台运行直到退出,退出时将调用 onDestroy()...使用 bindService 运行服务的情景:使用这种方法启动服务,调用者(也就是服务的客户端)将获得和服务交互的类,通过其调用时服务的相关内容会处于活动状态。 3.

    1K10

    安卓应用安全指南 5.3.2 将内部账户添加到账户管理器 规则书

    因此,通过使其成为私有服务,它可以避免其他应用的访问。 此外,账户管理器以系统权限运行,所以即使是私有服务,账户管理器也可以访问。...5.3.2.4 使用显示意图提供KEY_INTENT,带有登录界面活动的指定类名称(必需) 当认证器需要打开登录界面活动时,启动登录界面活动的意图,会在返回给账户管理器的 Bundle 中,由KEY_INTENT...所提供的意图应该是指定登录界面活动的类名的显式意图。 在使用隐示意图,它指定动作名称的情况下,有可能并不启动由认证器应用本身准备的登录界面活动,而是其他应用准备的活动。...5.3.2.8 应该在验证认证器是否正常之后,执行帐户流程(必需) 如果有多个认证器在设备中定义了相同的帐户类型,则先前安装的认证器将生效。 所以,安装自己的认证器之后,它不会被使用。...在执行帐户操作之前,用户应用应验证执行帐户操作的帐户类型,不管是否分配了常规认证器。 可以通过检查认证器的包的证书散列值,是否匹配预先确认的有效证书散列值,来验证分配给账户类型的认证器是否是正常的。

    1K20

    Android高频面试专题 - 基础篇(一)Activity

    可以从图中看出当Activity发生意外的情况的时候,这里的意外指的就是系统配置发生改变(在未配置android:configChanges的前提下),如横竖屏切换(切横屏时会执行一次,切竖屏时会执行两次...比如说:从mainactivity跳转到activity-A(或者继续从activity-A再跳转到activity-B),这时候,从后台强杀,只会执行mainactivity的onDestroy方法,...1.6 onSaveInstanceState()被执行的场景有哪些: 当用户按下HOME键时 长按HOME键,选择运行其他的程序时 锁屏时 从activity A中启动一个新的activity时...将某个Activity的启动模式设置为singleTop,启动此Activity时,会先检查栈顶是否是此Activity的实例,如果是,则直接复用,如果不是,才创建实例。...启动某个Activity时,会先检查任务栈中是否有该Activity的实例,有就直接复用(把前面所有的Activity出栈),没有才创建并入栈。浏览器的主界面通常采用此模式。

    2K31
    领券