频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
Android面向面试:Activity复习
2018-02-12 11:55:31      个评论    来源:听风-Android进阶  
收藏   我要投稿

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

    
    
         
                   
      
    
     android:scheme="demo" android:host="dudu" android:path="/test" android:port="4002"
     

应用内跳转和app间跳转

构建intent,跳转

Uri uri = Uri.parse("demo://dudu:4002/testname=张三&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

test

js跳转页面

需要重写WebView,拦截url进行Intent的拼装,跳转。
点击复制链接 与好友分享!回本站首页
上一篇:android 开发 web页面调取相册相机 上传图片
下一篇:记录Android8.0的app开发的一个问题
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站