Android程序员问答题
前言
最近三个月内,不断地进行移动应用开发在线测试题,也积累了不一样的知识。这也将对android studio有很好的掌握,对将来面试也很有好处。那么我就分享给大家。分享是一种幸福,这是一种质的飞越。
我的答题也可能存在出现错误的地方,欢迎指正,如果对于文章中的某些部分有不同的理解和想法,或者有更好的想法,欢迎留言讨论。
答题参考资料:
资料网址:http://www.android-doc.com/index.html,http://bbs.51cto.com/thread-954794-1.html,https://baike.so.com/doc/7013643-7236530.html,http://www.android-doc.com/reference/android/app/Activity.html,
材料答题
1.什么是Activity?
activity是Android组件中最基本也是最为常见用的四大组件之一。Android四大组件有Activity活动,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器。
Activity简单说,四大组件之一,一个与用户交互界面对应的activity。activity是Context的子类,通过setContentView(View)来显示指定控件的。
onCreate(Bundle)是你初始化活动的地方,而onPause()是你处理用户离开你的活动的地方。
Activity类是应用程序整个生命周期的重要组成部分,活动的发起和组装是平台应用程序模型的基本组成部分。
我相信学习Activity,必定需要理解生命周期图
public class Activity extends ApplicationContext{
protected void onCreate(Bundle icicle);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onFreeze(Bundle outIcicle);
protected void onPause();
protected void onStop();
protected void onDestroy();
这里描述了onCreate(Bundle)函数是你进行初始化的地方,这个也是执行onContentView(View)函数的地方,setContentView(View)函数可以传入一个由XML编制的UI界面,可以使UI和具体实现完全分离。onPause()函数是处理用户离开当前Activity的地方。更重要的是,任何在当前Activity中的任何改变都要在这个函数中提交。
生命周期:在整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。从onStart()开始到onStop()结束。从onResume()开始到onPause(()结束。
所以Activity生命周期:包含的回调方法有,onCreate(); onStart(); onResume(); onPause(); onStop(); onDestroy()
2.Activity, Intent, Service是什么关系?
Activity是负责用户界面的显示和交互,Service负责后台任务的处理,Activity和Service之间是通过Intent传递数据,因此可以把 Intent 看作是通信使者。
在同一个app来说,Service和Activity在同一个线程。
3.Service服务
服务是一个应用程序组件,代表应用程序希望在不与用户交互的情况下执行长时间运行的操作,或者提供其他应用程序使用的功能。
4.什么是服务?
- 服务不是一个单独的过程。服务对象并不意味着它在自己的进程中运行,除非另有说明,它运行在与它所属的应用程序相同的进程中。
- 服务不是一个线程。
在Service服务中的回调方法有onCreate, onStart, onDestroy, onBind 和 onUnbind。
5.广播接收器 BroadcastReceiver
BroadCastReceiver是Android四大组件之一,主要用于接收系统或者app发送的广播事件。广播分两种:有序广播和无序广播。无序广播:完全异步,逻辑上可以被任何广播接收者接收到。有序广播:按照被接收者的优先顺序,在被接受者中传播。
注册广播接收者
静态:
<receiver android:name=".BroadcastReceiver1">
<intent-filter>
<action android:name="android.intent.action.CALL">
</intent-filter>
</receiver>
动态:
receiver = new BroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(CALL_ACTION);
context.registerReceiver(receiver, intentFilter);
6.Android的数据存储方式
File存储,sharePrefernce存储,ContentProvider存储,SQLiteDataBase存储,网络存储。
7.ContentProvider
内容提供者是Android应用程序的主要构建,为应用程序提供内容。它们封装数据并通过单一ContentResolver接口将其提供给应用程序使用。方法:onCreate(),query(),insert(),update(),delete(),getType()。
8.Activity启动模式
- standard是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种模式。标准启动一个新的activity压入栈中。
- singleTop是在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它。
- singleTask是如果每次启动时系统首先会在返回栈中检查是否存在该活动的实例。
- singleInstance是两个应用都要调到activity,如果发现另一个应用存在activity栈则共享不新建。
9.ListView
public class MyListView extends Activity{
private ListView listView;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
listView = new listView(this);
listView.setAdapter(new ArrayAdapter<String>(this,R.layout.simple_listview,getData()));
setContentView(listView);
private list<String> getData(){
list<String> data = new ArrayList<String>();
data.add("醉翁猫咪");
return data;
}
}
10.Intent传递
Intent是要执行的操作的抽象描述。Intent为在不同应用程序中的代码之间执行延迟的运行时绑定提供了一种工具。其最重要的用途是开展活动,在活动中它可以被认为是活动之间的胶水。它基本上是一个被动的数据结构,对被执行的动作进行抽象描述。
11.Fragment的生命周期
生命周期:onAttach()–>onCreate()–>onCreateView()–>onActivityCreated()–>onViewStateRestored()–>onStart()–>onResume()。
12.Android 泄露的那些事?
内存泄漏简单地说,申请了一块内存空间,使用完毕后没有释放掉。
它的一般表现是:程序运行时间越长,占用内存越多,最终用尽全部内存,导致整个系统崩溃。
内存泄漏的的原因:
数据库没有关闭游标cursor 构造Adapter时,没有使用 convertView Bitmap对象不在使用时,调用recycle()释放内内存对象被生命周期长的对象引用。
13.mvc模式
MVC为Model-View-Controller,分为三个层—模型层,视图层,控制层。View视图是指用户看到并与之交互的界面,model模型是指模型表示业务规则,controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。
总结:
Android程序员是指从事Android移动应用操作系统、游戏和各种Android平台功能的应用、开发和测试的技术人员。Android工程师异常吃香,有一年开发经验的Android工程师的月薪在8000元左右。
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己。
欢迎大家关注我的微信公众号:「醉翁猫咪」
Android程序员问答题的更多相关文章
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
- 给Android程序员的六个建议
给Android程序员的六个建议 分类: 安卓相关2015-07-14 23:58 177人阅读 评论(0) 收藏 举报 android程序员 如果你一年前写的代码 , 在现在看来你还感觉写的很不错 ...
- Android高薪之路-Android程序员面试宝典
Android高薪之路-Android程序员面试宝典
- Android 程序员必须掌握的三种自动化测试方法
在日常的开发中,尤其是app开发,因为不像web端那样 出错以后可以热更新,所以app开发 一般对软件质量有更高的要求(你可以想一下 一个发出去的版本如果有重大缺陷 需要强制更新新客户端是多么蛋疼的事 ...
- 悲惨的Android程序员
Android程序员太悲惨了,连Android官网都访问不了,整个Android程序员的水平都被拉低了一个等级.受不了了.说说悲惨的遭遇吧. 起源:高射炮打苍蝇,驴受伤了 Android一个纯技术网站 ...
- Android程序员必知必会的网络通信传输层协议——UDP和TCP
1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯技术这一块)的开发者来说,网络编程是基础中的基础,只有更好地理解相关基础知识,对于应用层的开发才能做到游刃有余. 对于Android ...
- 迈向高阶:优秀Android程序员必知必会的网络基础
1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...
- IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架
每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...
- Android 程序员必须知道的 53 个知识点
1. android 单实例运行方法 我们都知道 Android 平台没有任务管理器,而内部 App 维护者一个 Activity history stack 来实现窗口显示和销毁,对于常规从快捷方式 ...
随机推荐
- 微信小程序文档
提示框: wx.showToast(OBJECT) 显示消息提示框 OBJECT参数说明: 示例代码: wx.showToast({ title: '成功', icon: 'success', dur ...
- java之spring之初始spring
1.Spring 在多个框架中起到润滑剂的作用,桥梁的作用,纽带的作用. 2.Spring是一个容器,也是一个对象工厂.帮助程序员创建对象,管理对象. 3.Spring的体系结构: 4.学习sprin ...
- 浮动IP地址(Float IP)与 ARP欺骗技术
浮动IP地址: 一个网卡是可以添加多个IP的. 就是多个主机工作在 同一个集群中,即两台主机以上.每台机器除了自己的实IP外,会设置一个浮动IP,浮动IP与主机的服务(HTTP服务/邮箱服务)绑在一起 ...
- 2019 三七互娱java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.三七互娱等公司offer,岗位是Java后端开发,因为发展原因最终选择去了三七互娱,入职一年时间了,也成为了面 ...
- 在Windows中运行Linux bash命令的几种方法
如果你正在课程中正在学习 shell 脚本,那么需要使用 Linux 命令来练习命令和脚本. 你的学校实验室可能安装了 Linux,但是你自己没有安装了 Linux 的笔记本电脑,而是像其他人一样的 ...
- vue创建项目(推荐)
上一节我们介绍了vue搭建环境的情况,并使用一种方式搭建了一个项目,在这里为大家推荐另一种创建项目的方式. vue init webpack-simple vuedemo02 cd vuedemo02 ...
- Django:实现读写分离
库的配置 1.读写分离 settings配置 #settings.py 配置库信息,生成2个库 DATABASES = { 'default': { 'ENGINE': 'django.db.back ...
- 深入理解JVM-java虚拟机栈
1.java虚拟机栈 1. Java虚拟机栈也是线程私有的,它的生命周期与线程相同(随线程而生,随线程而灭) 2. 如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowErro ...
- OAuth 2.0 的一个简单解释
OAuth 2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据. 这个标准比较抽象,使用了很多术语,初学者不容易理解.其实说起来并不复杂,下面我就通过一个简单的类比,帮助大家轻松理解,O ...
- centos7 ipython安装
##下载yum源(Centos 7 为例)[root@localhost ~]# wget http://mirror.centos.org/centos/7/extras/x86_64/Packag ...