我们找到其源码 android-6.0.0_r1\packages\apps\Launcher2 我们先看Manifest文件 找到app的入口Activity <activity...Launcer是集成Activity的而改方法是Activity的方法。接下来就进入到了我们熟悉的Activity的调用。...作用: 用于控制Activity,监控应用程序和系统的交互。 启动Activity的入口 调用Activity的生命周期方法。...真正开始启动Activity 进程的启动这里就不做介绍,后面会专门写一篇进程启动的源码解读,们现在讨论进程已存在的情况下启动Activity。...通过ams设置ActivityRecord的状态 到这里整个Activity的启动已经完成。我们只做了主流程的解析,而启动的细节还是非常多了,这里也无法一一展开。
传值到Activity Chapter One fragment 概念 fragment到底是什么东西呢?...英文为碎片,片段,通俗讲就是Activity界面的一个片段,组成部分。一个Activity界面可以有多个fragment 。fragment只能依赖于Activity而存在,像寄生虫一样。...Chapter Two fragment的生命周期 既然fragment依赖于Activity存在,那么fragment的生命周期与Activity息息相关,也就不难理解了。...与activity生命周期关系流程图如下: 在启动一个activity加载fragment的过程中,方法执行如下: onCreate(Activity)--->onCreate(fragment)---...创建多个fragment后,需将fragment与Activity联系起来,fragment 之间也需要切换, activity_main.xml文件 <RelativeLayout xmlns:android
fragment不能单独存在,必须依附在Activity上,所以在Activity跳转时,实际是跳到fragment的宿主上 代码: Activity点击跳转里 Intent intent=new Intent...(ListDetailsActivity.this,MainActivity.class); intent.putExtra("id",2); startActivity(intent); fragment...宿主Activity int id = getIntent().getIntExtra("id", 0);//获取intent值 if (id == 2) { //判断intent值...getSupportFragmentManager() .beginTransaction() .replace(R.id.container,new MyFragent())//设置显示fragment
应用场景 如果你需要在fragment中处理一些事情,事情的处理结果或者你需要告 诉activity马上要做什么事,这时候就需要和activity进行通讯。...包括很多fragment在viewpager中的情况,而且可以保证activity能即时进行响应。相比发送广播,性能更好,代码更少。...实战 假设有这样一个需求:在一个activity中有一个viewpager,viewpager里面有几个fragment,其中的一个fragment里面有一个任务,这个任务做完之后需要跳转到其他的fragment...分析 既然需要跳转的到的fragment在viewpager里,那么只要控制viewpager跳转就可以了,而viewpager在activity里,我们是不是可以告诉activity一声让它处理一下就可以了呢...4.根据业务进行回调 这里我们只需要在需要Activity切换fragment的地方调用 if (listener !
} } catch (Exception e) { } return true; } } ActivityManagerService 完整源码参考...msg.what) { case BIND_APPLICATION: Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER...handleBindApplication(data); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER
启动源码分析 ( ActivityThread 流程分析 一 ) 分析了从 ActivityThread 的 main() 函数启动 , ApplicationThread 绑定 , Application...创建 , 下面继续分析后续内容 ; 一、ActivityManagerService.attachApplicationLocked ---- 回到 AMS 中的 ActivityManagerService...badApp = true; } } return true; } } ActivityManagerService 完整源码参考...启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 二 ) 二、AMS 进程中执行的相关操作 章节进行过讲解 , 不管是冷启动 , 还是热启动 , 都要调用 ActivityStackSupervisor.realStartActivityLocked...方法开启 Activity ; 后续逻辑基本就与该博客后续的分析对应上了 ; public class ActivityStackSupervisor extends ConfigurationContainer
前言 Activity 类是 android 应用的关键组件,在日常开发中,绝对少不了组件。既然用了这么久,你知道他的启动流程?...本文基于 Android 12 版本源码,从 startActivity 作为切入点,对整个启动流程进行分析。...app 显示在桌面上,等到点击某一个 app 的时候就会 fock 一个新的进程,然后启动 Activity 这篇文章主要来看一下应用内启动 Activity 是一个怎样的流程 一,Activity...总结一下流程 调用 Activity 的 startActivity 方法来启动目标 Activity 接着就会调用到 Instrunmentation 的 execStartActivity 方法,通过获取...参考 Activity 启动流程 Android 深入研究之 ✨ Activity启动流程 ramework | Activity启动流程(android-31) 最后 文章到这里就结束了,本文主要是分析了一下应用内
概述 Activity作为Android的四大组件之一,Android主要的界面组成部分,用于直接跟用户进行交互操作,在面试中与Activity相关的知识也是经常被问到,如果你面试的高级岗位,那么对Activity...的启动和绘制流程就必须的熟悉,本文将从Activity的启动流程来分析Activity。...启动Activity的方式大致有两种:一种是在桌面点击应用程序的图标,进入应用程序的主界面;另一种是在应用程序中,进入一个新的Activity。...前者属于launcher启动的范畴,本文不做具体的深入分析,后面会具体的分析,不过它的实质是从一个应用的Activity进入另一个应用Activity。...值得注意的是,Android 5.0,7.0等版本中启动Activity的流程略微有一些细小的改变,但这并不妨碍我们理解Activity的启动流程。
与Activity 当在使用activity嵌套fragment,fragment再嵌套子fragment时,相当于有两层fragment,假设最外层为第一层,其中一个Fragment为ParentfragmentA...activity....is * placed in a {@link FragmentTransaction} until it is committed and * attached to its activity...对于viewII的点击事件,实现从Child1切换到ParentB //获取到 所依附的activity对象 InitEmptyKeyActivity...activity = (InitEmptyKeyActivity) getActivity(); activity.mViewPager.setCurrentItem(
Android 应用程序启动过程 Activity启动过程可以分为两种:一种是根activity的启动过程,另一种是普通activity启动过程。...根activity指的是应用程序启动的第一个activity,因此也可以理解为应用程序的启动过程。普通activity除根activity以外的其他activity。...根Activity启动流程 点击桌面应用图标,Launcher进程将启动Activity的请求以Binder的方式发送给了AMS。...同时交付ActivityStarter处理Intent和Flag等信息,然后再交给ActivityStackSupervisior/ActivityStack处理Activity进栈相关流程。...Activity 启动流程源码分析 Activity 调用startActivity最终都会调用startActivityForResult方法 public void startActivityForResult
= (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment); 一个比较好的做法是在fragment...里面定义一个回调接口,然后要求宿主activity实现它。...当activity通过这个接口接收到一个回调,它可以同布局中的其他fragment分享这个信息。...这个情况下,在MenuFragment中声明一个接口MyMenuListener(第一步) 为了确保宿主activity实现这个接口,MenuFragment的onAttach()方法(这个方法在fragment...被加入到activity中时由系统调用)中通过将传入的activity强制类型转换,实例化一个MyMenuListener对象:(第二步) 之后MainActivity实现这个MyMenuListener
使用Fragment的时候可能需要在两个Fragment之间进行参数的传递,开始想着可以使用SharedPreferences进行处理,想想这些简单的参数没有必要使用这么麻烦的方式去实现,翻了一下Fragment...的API,找到一个方法就能实现像Activity一样便捷的实现参数传递 程序中的一段代码 ft.hide(getActivity().getSupportFragmentManager().findFragmentByTag...,参数的形式只要bundle能传递都可以实现 这个原理好像是和Activity是一样的。...我这里传递的是一个关键字,从一个搜索Fragment页面跳转到两外一个结果查询的Fragment页面,在跳转的时候也可以加上一些动画的跳转效果 ft.setCustomAnimations(R.anim.slide_in_right..., 最后再fragment中 shipProductId=getArguments().getString("productId"); 即可得到
最近做的一个项目,突然出现了这个问题, Activity 中有四个fragment,分别是 first, two, three, four,默认显示的是fragment a。...在开发过程中,first中 跳转到另一个Activity ,将这个外部Activity命名为B吧......中,在这里跳转到three,这里重写了onResume()方法 相信有这个错误的童鞋一定都找过很多案例,这里就不多做解释了,直接上代码 //activity跳转到fragment @Override protected...void onResume() { int id = getIntent().getIntExtra("id", 0); if (id == 2) { Fragment..., fragmen); transaction.commit(); mViewPager.setCurrentItem(2);// //帮助跳转到指定子fragment
本文主要整理了Window有关源码的部分分析记录, 可能有差错的地方,请批评指正。 提示:文中链接需要点击文章末尾处阅读原文才能点击。...)设置了WindowManager对象,还通过Window#getWindowManager对Activity的mWindowManager赋值,这样Activity就与Window#WindowManager...本身重写了getSystemService方法,如果使用android.app.Activity#getSystemService,返回的其实不是这个对象,下面会说到)。...的Window是怎么显示出来,看Activity.makeVisiable: void makeVisible() { if (!...第七步 这里整理了一个简单的流程图,希望能够帮助我们理解。 ? 到此Activity的Window,就完成了创建,显示。
上一篇解决了【Android解决Fragment跳转到Fragment页面问题,相同或不同宿主Activity解决方法】 背景:我的问题是在主页面出现的,硬是要从跳过好几层的Activity中点击一下就要跳到主页面中的任意一个...Activity跳转到Fragment首先我试过广播是不好使的,因为会出现…… after on saveInstance错误。...处理:Activity跳到fragment 其实简单的说Activity跳fragment很简单,在activity中写上这段代码,在跳转到该activity的时候用根据传的值判断加载哪个fragment..., mDownloadFragment); ftransaction.commit(); } 但是如果你是通过该activity中的fragment跳转到其他activity之后,想在其他activity...中再跳回来到指定的fragment而不重新加载activity,就得通过下面的方法了。
Activity启动流程很多文章都已经说过了,这里说一下自己的理解。 Activity启动流程分两种,一种是启动正在运行的app的Activity,即启动子Activity。...后边启动Activity的流程是一样的,区别是前边判断进程是否存在的那部分。 Activity启动的前提是已经开机,各项进程和AMS等服务已经初始化完成,在这里也提一下那些内容。...Instrumentation:仪表盘,负责调用Activity和Application生命周期。测试用到这个类比较多。 流程图 这个图来源自网上,之前也看过很多类似讲流程的文章,但是大都是片段的。...如果是启动子Activity,那么就只涉及AMS进程和app所在进程。 具体流程 1. Launcher:Launcher通知AMS要启动activity。...Activity启动流程(从Launcher开始): 第一阶段: Launcher通知AMS要启动新的Activity(在Launcher所在的进程执行) Launcher.startActivitySafely
这个方法会检查一些可见性相关的属性,然后转交给ActivityStack.resumeTopActivityUncheckedLocked方法来继续流程。 4....Activity了(若对应Activity的进程尚未启动,则会通过ATMS的startProcessAsync方法启动进程,这就是另一个流程了)。...ActivityThread可以理解为一个应用的主线程(虽然它不是一个线程),应用的main方法就是在这个类里面的,并通过Looper维持了应用的运行状态,这点在这篇文章中做了分析。...这里的在Callback和LifecycleState是在ActivityStackSupervisor的realStartActivityLocked流程创建的,分别对应的是LaunchActivityItem...回调; 四、图示 点击查看原图 Activity启动流程.png
在要跳转的activity中的按钮写: //一、先跳转到主MyActivityFragment,通过传递参数让他接受 case R.id.grxxbut: Intent show=new Intent(...GrXxActivity.this,MyActivityFragment.class); show.putExtra(“grxx”,1); startActivity(show); finish(); break; //二、这个是fragment...System.out.println(“aaa”+id); if(id==1){ transaction.replace(R.id.zlayout, showFragment); //这里是指定跳转到指定的fragment
1、Activity的实现 对于Activity的SwipeBack实现,网上有大量分析,这里我简要介绍下原理,如下图: 我们只要保证SwipeBackLayout、DecorView和Window的背景是透明的...分析: Fragment之间的启动无非下图中的2种: 而这个库我并没有考虑replace的情况,因为我们的SwipeBackFragment应该是在"流式"使用的场景(FragmentA -> FragmentB...} } 坑点 1、触摸事件冲突 当我们所拖拽的边缘区域中的子View,有其他Touch事件,比如Click事件,这时我们会发现我们的拖拽失效了,这是因为,如果子View不消耗事件,那么整个Touch流程直接走...原因在于: SwipeBackFragment库是一个仅实现Fragment&Activity拖拽返回的基础库,适合轻度使用Fragment的小伙伴(项目属于多Activity+多Fragment,Fragment...Fragmentation主要是在项目结构为 单Activity+多Fragment,或者重度使用Fragment的多Activity+多Fragment结构时的一个Fragment帮助库,Fragment-SwipeBack
领取专属 10元无门槛券
手把手带您无忧上云