各位朋友,大家好:
我是安卓开发者SGY,这是我写的第一篇博客,主要对安卓开发面试必备的基础知识进行梳理,进行深入理解还需查阅相关资料,有不合理的地方希望各位朋友及时提出宝贵意见,我会及时进行修正。
关于Activity必须要了解的内容有:Activity的生命周期、android任务栈、Activity启动模式、scheme跳转协议。
Activity是应用与用户交互的接口,它提供了一个界面让用户进行点击、滑动等操作
通用的生命周期图就不贴了,网上都能找到
共7种函数
Activity启动-->onCreate()-->onStart()-->onResume() onResume()方法执行后可以进行交互
Activity不可见时(如点击home)-->onPause()-->onStop()
再次回到Activity时,-->onRestart()-->onStart()-->onResume() onRestart()方法是在Activity由不可见变为可见时执行
退出Activity时onPause()-->onStop()-->onDestroy() onDestroy()方法中可做资源的回收与释放
知识点:android进程优先级 前台>可见>服务>后台>空
1.3 activity启动模式
共4种
标准:standard
栈顶:singletop
栈内:singletask
全局:singleinstance
1.4 scheme跳转协议
通过注册scheme可在App页面内跳转,从H5页面跳转到App,从一个App跳转到另一个App
关于Fragment必须要了解的内容有:Fragment的生命周期、Fragment之间的通信、Fragment管理器
Fragment相比Activity更节省内存,UI切换更舒适
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
RightFragment rightFragment = new RightFragment();
transaction.add(R.id.id_fragment_right,rightFragment,"rightFragment");
transaction.commit();
由于FragmentPagerAdapter在destroyItem时使用detach方法将Fragment的UI与Activity的UI脱离,而FragmentStatePagerAdapter在destroyItem时使用remove方法将Fragment内存回收,所以,FragmentStatePagerAdapter更适合fragment较多的情况
2.1 Fragment的生命周期
共有11种函数,在fragment的view创建之后,在onPause之前,activity的周期是先于它运行的,自onPause之后,fragment的周期的先于activity运行的。
2.2 Fragment通信(需要代码实践)
2.2.1 在Fragment中调用Activity的方法 getActivity
2.2.2 在Activity中调用Fragment的方法 接口回调
2.2.3 在Fragment中调用Fragment的方法 findFragmentById
Fragment常用方法:replace(),add(),remove()
Service(服务)是一种可以在后台执行长时间运行操作而没有用户界面的应用组件
Service是运行在主线程中的,所以不能进行耗时操作
Service生命周期,先上图
启动服务的生命周期:onCreate()、onStartCommand()、onDestory()
绑定服务的生命周期:onCreate()、onBind()、onUnbind()、onDestory()
但是要注意的是onBind()只被执行一次,可以绑定已经启动的服务
3.1 Service启动方式
startService()
步骤:定义一个类继承Service,注册Service,使用Context的startService(Intent)方法启动。
bindService()
步骤:创建BindService服务端继承自Service,在类中实现IBinder接口的实例对象并tigong公共方法给客户端调用,从onBind()回调方法返回此Binder实例,在客户端中,从onServiceConnected()回调方法接收Binder,并使用提供的方法调用绑定服务
BroadcastReceiver是一种广泛运用的在应用程序之间传输信息的机制,android中广播内容是一个Intent,可以携带要发送的数据
广播种类:normal Broadcast;system Broadcast;local Broadcast
其它知识点:
Binder是一种通信机制,通常用于跨进程通信
AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言,主要用于多进程并发的进程间通信内容参考自慕课Doc Mike老师视频,后续文章持续更新,希望大家共同进步!