Android面向面试复习----Activity复习
2018-02-11 17:48
405 查看
Activity复习
Activity是我们学习Android的时候的第一个组件,它提供界面用户可以进行滑动、点击等交互。使用上很简单,但是有一些相关的知识也许需要很好的掌握才能用好。1. Activity生命周期
Activity的四种状态running: 活动状态,可以交互
paused: 失去焦点,或者被盖住的情况下,无法进行交互
stopped: Activity被完全覆盖的情况
killed: Activity被系统回收。
生命周期
oncreate:Activity被创建
onStart:Activity被启动,可见,不可交互
onResume:Activity可进行交互
onPause:Activity停止状态,可见,不可交互
onStop:Activity被停止,被覆盖,不可见
onRestart:Activity被重启,从不可见到可见
onDestory:Activity被销毁,可以进行资源回收
Activity启动:oncreate()->onStart()->onResume()
点击Home键:onPause()->onStop()
再次回到Activity:onRestart()->onStart()->onResume()
退出Activity:onPause->onStop()->onDestory()
进程优先级
前台进程:前台交互的Activity或者前台Activity绑定的Service
可见进程:不可交互的进程
服务进程:后台的Service进程
后台进程:从前台切换到后台运行的进程
空进程:没有活跃的组件,随时可被回收
2. Android任务栈
Activity是存储在任务栈中的,它的特点是先进后出。这块跟Activity的启动模式相关比较紧密,同时,app在安全退出时,也需要遍历所有的Activity,都finish后再退出。3. Activity启动模式
standed:标准模式,每次启动Activity都会创建一个实例,并加入任务栈中,不会复用,比较消耗资源singleTop:栈顶复用模式,启动Activity的时候,会去判断,任务栈的栈顶是否是该Activity的实例,那么就不会再次创建,直接复用
singleTask:栈内复用模式,启动Activity的时候,会去判断,任务栈中是否存在该Activity的实例,如果存在,它会将该实例上面部分所有activity实例出栈,把当前实例置于栈顶。
singleInstance:在使用的过程中会有一些问题,很少使用,不多介绍。(Ps:在使用时出现过bug)
4. scheme跳转协议
在需要能够被打开的Activity中添加以下样例的intent-filter<intent-filter> <!--下面这几个必须要设置--> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <!--协议部分--> android:scheme="demo" android:host="dudu" android:path="/test" android:port="4002" </intent-filter>
应用内跳转和app间跳转
构建intent,跳转
Uri uri = Uri.parse("demo://dudu:4002/test?name=张三&password=12345"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
接收相关的uri和schme
需要结合启动模式,在onCreate或者newIntent中处理。
Intent intent = getIntent(); String scheme = intent.getScheme(); String dataString = intent.getDataString(); Uri uri = intent.getData(); System.out.println("scheme:" + scheme); if (uri != null) { //完整的url信息 String url = uri.toString(); //scheme部分 String schemes = uri.getScheme(); //host部分 String host = uri.getHost(); //port部分 int port = uri.getPort(); //访问路径 String path = uri.getPath(); //编码路径 String path1 = uri.getEncodedPath(); //query部分 String queryString = uri.getQuery(); //获取参数值 String name = uri.getQueryParameter("name"); String password = uri.getQueryParameter("password"); }
url启动app
<a href="demo://dudu:4002/test?name=张三&password=12345">test</a>
js跳转页面
需要重写WebView,拦截url进行Intent的拼装,跳转。
相关文章推荐
- Android面向面试复习----AsyncTask详解
- Android面向面试复习----Bitmap
- Android面向面试复习----Handler详解
- Android面向面试复习---git版本控制
- Android面向面试复习----OOM异常
- Android面向面试复习---Android构建流程
- Android面向面试复习----UI卡顿
- Android面向面试复习----内存泄漏
- Android面向面试复习----HandlerThread的妙用
- Android面向面试复习----冷启动优化
- Android面向面试复习----IntentService详解
- Android面向面试复习----Fragment复习
- Android面向面试复习----内存管理
- Android面向面试复习----Proguard混淆技术详解
- Android面向面试复习----ANR
- 面试复习——Android工程师之算法基础
- Android复习笔记--Activity
- Android面试之---讲一下你对Activity的了解(面试必问的).
- 在Android编程或者面试中经常会遇到JAVA 面向对象和集合的知识点
- 面试复习——Android工程师之Java面试题