activity-alias是android里为了反复使用Activity而设计的。...当在Activity的onCreate()方法里,运行getIntent().getComponent().getClassName();得到的可能不是这个Activity的名字,有可能是别名的名字,比如...:在AndroidMenifest.xml有例如以下配置: activity android:name=”.TestAndroid” android:icon=”@...> 这个应用会在桌面上建两个进入点,即建两个能够进入TestAndroid这个Activity的快捷图标。...这时getIntent().getComponent().getClassName() 得到的名字就不一样,一个是com.test.TestAndroid,一个是com.test.TestAndroidAlias
第一个例子,显示网址 首先创建工程 按照提示填入 我使用的是2.3版本,所以Min SDK Version填10 修改/res/layout/下main.xml文件 加入按钮 对应的程序文件如下:...之间进行跳转的,Activity可以理解成web开发中的form....> activity android:name=".Welcome" android:label="welcome">activity> activity...android:name=".Login" android:label="login">activity> 添加的登陆页面效果 使用的是TableLayout...requestCode 开启请求Intent时对应的请求码 resultCode 返回的结果验证码 data * 返回的Intent * * @see android.app.Activity
Activity 的方法 启动带返回值的Activity Activity结束 方法 Activity状态保存,恢复的方法 面试中经常问到的例子 Activity是Android最基本的四大组件之一(Activity...Activity 生命周期 简介 首先我们需要了解一下Activity的继承关系。...的继承关系后,我们开始了解Activity的声明周期,Activity的生命周期直接影响到与用户的交互,此声明周期很重要。...Activity状态保存,恢复的方法 当Activity异常退出时候,Activity会自动保存一些数据,但是,如果是app重要数据,还请在代码中手动保存Bundle类型的数据,防止Activity保存的数据不理想...Activity 状态保存与恢复 Activity 状态保存与恢复的周期图如下: Activity 状态保存与恢复的回调方法 Activity状态保存与恢复的回调方法如下: // Activity
Activity 对象可以执行的动作,动作可以自己定义,也可以使用Android自带的一些动作,此处使用了Android自带的访问网页的动作,那么系统将会寻找能够执行该动作的Activity并启动,如果有多个..."/> activity> SecondActivity 使用默认自带的代码就可以了 运行程序,单击按钮之后出现系统的选择框...在这里我们有两种选择,我们可以使用当前项目的应用响应这个Intent,但是并不能打开网页,因为我们并没有实现打开网页的功能,也可以使用系统自带的浏览器相应这个Intent,这样就可以打开百度网页。...而Serializable类型是一个接口,意为“序列化的数据”,这个接口使得类的对象能够变成序列化的数据,供传输使用。...,也是将一些复杂的数据序列化用于传输,两者的区别在于效率问题Parcelable接口的效率更高,但是使用起来更加复杂,要实现接口中的一系列抽象方法用于将复杂的类型序列化,而Serializable接口使用简单
使用android studio的安卓开发者可能发现它和eclipse+ADT大同小异,个人用完android studio之后发现android studio 除了界面比较炫酷以外,并没有多少优点.而且最被广大使用者诟病的内存占用大问题也没有解决...不过,android studio在文件—新建的菜单中,可以快速新建Activity的功能相当实用,如图: ?...android studio的新建activity功能就不用每次让我们很麻烦地建一个java类然后继承Activity了,Activity的几个必要的方法自动为我们声明了。...实际上,eclipse也有这样的功能: Eclipse安卓使用Activity模板快速新建Activity eclipse的新建菜单里面其实也有快速新建Activity的功能,只是没有放在醒目的位置:...快速新建activity几种方法: ①分别打开菜单FILE——NEW——other——Android——Activity; ②Ctrl+N——Android——Activity; 用新建activity
本例使用FLAG_ACTIVITY_CLEAR_TOP退出整个应用程序: 多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序。...,再次开启A时将会清除该进程空间的所有Activity。...在D中使用下面的代码: Intent intent = new Intent(); intent.setClass(D. this , A. class );...” 然后在它的onCreate方法里跳转到“真正”的载入界面就可以实现在D中点退出程序按钮时看上去立即退出程序的效果 2.A必须是程序启动的第一个Activity才能起到这种立即退出的效果,因为...Intent.FLAG_ACTIVITY_CLEAR_TOP只会把目标Activity的“上面”的Activity清理掉,而如果目标Activity的“下面”还有Activity(换句话说,目标Activity
但是在写demo测试的时候,发现这个说法是不准确的。这句话成立的条件是,要启动的Activity的affinity是唯一的,即当前所有的任务中没有与该affinity相同的任务。...; MainActivity中启动SecondActivity SecondActivity中启动MainActivity MainActivity中启动SecondActivity 使用命令:“dumpsys...activity activities“,dump Activity栈的信息。...如果设置了“singleTask”启动模式的Activity不是在新的任务中启动的,它会在已有的任务中查看是否已经存在相应的Activity实例,如果存在,会调用该实例的onNewIntent,并且会把位于这个...Activity实例上面的Activit全部结束掉,最终这个Activity实例会位于任务的堆栈顶端。
你可以认为fragment作为一个activity中的一节模块 ,fragment有自己的生命周期,接收自己的输入事件,你可以添加或移除从运行中的activity。 ...处理Fragment的生命周期 宿主activity的声明周期直接影响到fragment的生命周期。 ...onPaused() 另一个activity在前景运行,并且享有焦点,但是这个fragment所在的activity仍然可见(前景activity部分遮挡或者是半透明的)。...数据存储和恢复 和Activity类似,可以用Bundle类对象保存fragment的状态,当activity的进程被kill之后,需要重建activity时,可以用于恢复fragment的状态。...3.fragment和Activity之间的通信:(也就是控件的相互操控) fragment控制fragment:得到一个Activity,然后通过这个Activity的getFragmentManager
大家好,又见面了,我是你们的朋友全栈君。 前言 Activity可以获取运行中的应用信息,可以获取到servcie,process,app,memory,Task信息等。...) :为Activity创建新的任务栈,activity(需要创建任务栈的Activity),intent(用于跳转页面的Intent),description(描述信息),thumbnail(缩略图)...图标大小 getMemoryInfo (ActivityManager.MemoryInfo outInfo) : 获取系统当前内存信息 getProcessMemoryInfo():返回一个或者多个进程使用内存的情况... 我们需要定义一个自己的ActivityManager,并且在BaseActivity中的OnCreate方法里将启动的Activity通过我们自定义的ActivityManager把任务放入栈中,...()} 获取实例 * 成员变量 {@link #mActivityStack} 应该与系统的回退栈保持一致,所以在启动activity的时候必须在其onCreate中 * 将该activity加入栈顶,
点击添加按钮之后-----弹出一个新的activity--------在新的activity将数据输入保存之后,关闭当前的activity回到之前的activity刷新内容 实现:使用onActivityResult...intent.putExtra("fromMain", str); // startActivity(intent); // 启动需要监听返回值的Activity...intent);// 设置resultCode,onActivityResult()中能获取到 finish(); } }); 两个activity
我的思路很简单: Activity A保存为bitmap 把bitmap分割成两个子bitmap 子bitmap传递至Activity B 在Activity B的布局之上显示两个子bitmap 使用动画向外移出两个子...对于低内存或者大屏幕的设备来说,可能是很大的开销。如果你依然选择使用,请小心,并且不要过度使用。...保存Bitmap## 为了得到整个Activity的图片,可以使用以下代码: View root = currActivity.getWindow().getDecorView().findViewById...我使用硬件加速(了解更多有关硬件加速动画,请阅读我最新发布的blog)并且在动画结束或者取消后,做了一些清理操作(如,移除硬件图层,把Imageview从Window窗口移除等等) 如何使用我的动画##...我曾反复思考,在尽量不限制开发者的情况下,如何最简单便捷的使用它。
主要就是activity和recycview,recycview和adapter; 主要就是fragment和recycview,recycview和adapter; 1.在build.gradle添加...getName() { return name; } public int getImageId() { return imageId; } } 5.在Activity...layout_height="match_parent"> 第二步:在fragment中定义使用...mItemGoodsPrice = (TextView) itemView.findViewById(R.id.item_goods_price); //点击事件放在adapter中使用...,也可以写个接口在activity中调用 //方法一:在adapter中设置点击事件 itemView.setOnClickListener(new
在非Activity中使用startActivity:Calling startActivity() from outside of an Activity context requires the...FLAG_ACTIVITY_NEW_TASK flag 问题描述 在APP 1中启动APP 2中的Activity。...context requires the FLAG_ACTIVITY_NEW_TASK flag....原因分析 activity继承了context重载了startActivity方法,如果使用acitvity中的startActivity,不会有任何限制。...而如果直接使用context的startActivity则会报上面的错误,根据错误提示信息,可以得知,如果要使用这种方式需要打开新的TASK。
大家好,又见面了,我是你们的朋友全栈君。...最近在做菜单,有三个界面分别用activity来显示,如 Activity A -> Activity B -> Activity C,返回键Activity C -> Activity B...-> Activity A,当从A进入到B时按返回键无法退到A,是因为在A进入B时用了finish()方法,把A给销毁了,如下: finish(); Intent aToB = new Intent
Activity 什么是Activity 创建Activity 启动Activity 保存Activity状态 Activity的生命周期 ---- acitivyt 是什么 引用官方的说法: 是一个应用组件...); } } ---- 启动Activity 可以通过一个intent 来启动 一个Activity ,关于intent稍后会做总结 明确目标启动 在明确的指导要启动的Activity的时候可以显示使用...,系统会过滤所有的Activity的intentFilter来匹配 ;一般 在同一个应用中不必使用隐式Intent; 例如 我在为A Activity添加这样的IntentFilter: activity..."); //附加信息的描述 这里的描述只要在intentFilter中声明了就能匹配上, // 如果有一项未声明则匹配不上,如果intentFilter中没有可以不添加,会使用默认的category in.addCategory...).show(); } 为某个结果启动一个Activity 如果启动一个Activit只为获得某个结果 可以 使用 startActivityForResult() 来启动一个Activity ,在获得结果后会回调
文章目录 一、activity的生命周期 1、activity的四种状态 2、activity的生命周期 3、activity的进程优先级 二、android的任务栈 三、activity的启动模式 四...():activity重新启动才调,由不可见状态变为可见状态的时候会调用 onDestory(): 做一些资源释放 3、activity的进程优先级 前台:可交互的activity 或者 在前台activity...绑定的service 可见:看得见但不能交互的进程 服务:后台开启的service服务 后台:前台进程被按home键后,但是不一定会回收,要看内存使用情况 空:没有活跃的组件,只是出于缓存的目的...):创建的activity是在栈顶的话,就会复用 3、singleTask(栈内复用):创建的activity是在栈内的话,就会复用并将栈内其上的activity移除,并回调一个newIntent()...; 4、singleInstence:在整个系统在只有这一个activity,并且独享任务栈 四、scheme跳转协议 使用场景:1、服务端下发的跳转 2、H5跳转activity 3、app根据
android:text="转第二页" /> MainActivity,主要通过startActivityForResult来传递请求码,返回数据的时候...,第二个页面调用Activity.setResult()方法设置返回Intent以及返回码,需要重写源Activity的onActivityResult()方法以便于接受返回的Intent,在onActivityResult...intent.putExtra("fromMain", str); // startActivity(intent); // 启动需要监听返回值的Activity...,会响应此方法 // requestCode和resultCode必须与请求startActivityForResult()和返回setResult()的时候传入的值一致。...getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 每二个Activity /**
考察要点: 启动Activity会经历哪些生命周期回调 冷启动大致流程,涉及哪些组件,通信过程是怎么样的? Activity启动过程中,生命周期回调的原理?...进程A与AMS的交互过程 此处以跨进程启动Activity分析一下源码流程: A调用startActivity时,需要与AMS交互,此时需要需要获取到AMS的代理对象Binder也就是上图的AMP,通过...方法里面会获取到请求的Activity参数信息: ``` mRemote.transact(START_ACTIVITY_TRANSACTION,data,reply,0); ......就是mFocusedStack,它会将栈顶的ActivityRecord返回出来,我们的目标Activity早就放置在了栈顶,只是一直没有初始化。...(activity,r.state); //生命周期的OnCreate activity.performStart(); //生命周期的OnStart return activity ``` handleResumeActivity
Activity 类 ) 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件...三、使用 Hook 技术在主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 1、反射获取 ActivityThread 类 2、反射获取 ActivityThread...Intent 替换掉 , 使用占坑的 Activity 替换插件包中的 Activity , 之后 AMS 执行完毕 , 执行到主线程 实例化 Activity 对象之前 , 还要替换回去 ; 插件包组件启动方式...三、使用 Hook 技术在主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 ---- 1、反射获取 ActivityThread 类 // 反射获取...Activity 示例类之前 , 使用插件包中的 Activity 组件替换之前在 AMS 调用之前使用的 占坑用的 Activity , 就是要创建 插件包 中的 Activity 类的实例对象 ;
Activity为什么需要启动模式: 当我们多次启动同一个Activity的时候,系统会创建多个实例,并把它们一一放入任务栈当中,当我们单击back键的时候,会发现这些Activity会一一回退。...Activity的四种启动模式 standard:标准模式 标准模式,这也是系统的默认模式。每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。...一个任务栈中可以有多个实例,每个实例也可以属于不同的任务栈。在这种模式下,谁启动了这个Activity,那么这个Activity就运行在启动它的那个Activity所在的栈中。...如果被启动的Activity采用standard模式启动,那么连同它之上的Activity都要出栈,系统都会创建新的Activity实例并放入栈顶。...FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 具有这个标记的Activity,不会出现在历史Activity的列表当中,当某些情况下我们不希望用户通过历史列表回到我们的Activity
领取专属 10元无门槛券
手把手带您无忧上云