2020-Android面试

本文详细介绍了Android面试中常见的知识点,包括Android系统的全景图,四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的工作原理和生命周期,以及SQLite数据库的事务操作。此外,还讲解了JNI(Java Native Interface)和NDK的基础知识,如何通过JNI进行本地代码调用,以及内存管理中的内存泄漏和内存溢出区别。最后,提到了Android项目的目录结构和关键配置文件AndroidManifest.xml的作用。
摘要由CSDN通过智能技术生成

1。Android全景图
这里写图片描述
底层(LInuxKernel):驱动程序
程序包(Libraries):SQLite;
Application framework: 提供手机开发API(Java开发)
Applications:开发的软件
(从全景图上面向下面的层调用)
这里写图片描述
Android 四大组件

1) Activity: Android软件的界面,包括用户界面的一些组件,用于和用户进行交互。
2) Service:不可见,为整个application提供支持,是实现程序后台运行的解决方案,等程序进程被杀掉时,依赖于该进程的服务也会停止。
3)BroadcastReceiver:用于APP接收(发送)广播消息
4)ContentProvider:为application之间共享数据(来源可以是数据库)

Android 生命周期
这里写图片描述
这里写图片描述

onCreate() :活动第一次创建时被调用,完成活动初始化操作
onStart() : 活动由不可见变为可见时调用
onResume() 当Activity准备好和用户进行交互时调用。该活动处在活动栈栈顶
onPause() 系统准备去启动或恢复另一个活动时调用
onStop() 活动完全不可用时调用
onRestart() 活动被销毁前调用
onDestroy(): 整个Activity被销毁:调用finish();系统资源不够用时
onRestart() 活动由停止变为运行时调用

Activity类中的finish()、onDestory()和System.exit(0) 三者的区别:

Activity.finish() 是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存系统只是将最上面的Activity移出了栈,“back”按键的时候,也不会找到这个Activity。

Activity.onDestory() 系统销毁了这个Activity的实例在内存中占据的空间。

System.exit(0) : 杀死进程,活动所占的资源会被释放

这里写图片描述

当在一个ACtivity中点击按钮后弹出提示对话框,则只需在AndroidManifest.xml 文件中对应的activity里添加android:theme= “@android:style/Theme.Dialog ”即可

活动因内存不足被收回导致页面数据丢失
解决方法
用onSaveInstanceState() 该方法可保证活动被收回前调用,该方法携带一个Bundle类型的参数,提供了一系列保存数据的方法,eg putString(键,值)可以保存字符串,获取的时候用getString(键)的方法获得。
Instant也可以结合Bundle一起传递数据。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值