Android程序员问答题

时间:2022-03-31 23:43:14

前言

最近三个月内,不断地进行移动应用开发在线测试题,也积累了不一样的知识。这也将对android studio有很好的掌握,对将来面试也很有好处。那么我就分享给大家。分享是一种幸福,这是一种质的飞越。

我的答题也可能存在出现错误的地方,欢迎指正,如果对于文章中的某些部分有不同的理解和想法,或者有更好的想法,欢迎留言讨论。

答题参考资料:

资料网址:http://www.android-doc.com/index.htmlhttp://bbs.51cto.com/thread-954794-1.htmlhttps://baike.so.com/doc/7013643-7236530.htmlhttp://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程序员问答题的更多相关文章

  1. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  2. 给Android程序员的六个建议

    给Android程序员的六个建议 分类: 安卓相关2015-07-14 23:58 177人阅读 评论(0) 收藏 举报 android程序员 如果你一年前写的代码 , 在现在看来你还感觉写的很不错 ...

  3. Android高薪之路-Android程序员面试宝典

    Android高薪之路-Android程序员面试宝典

  4. Android 程序员必须掌握的三种自动化测试方法

    在日常的开发中,尤其是app开发,因为不像web端那样 出错以后可以热更新,所以app开发 一般对软件质量有更高的要求(你可以想一下 一个发出去的版本如果有重大缺陷 需要强制更新新客户端是多么蛋疼的事 ...

  5. 悲惨的Android程序员

    Android程序员太悲惨了,连Android官网都访问不了,整个Android程序员的水平都被拉低了一个等级.受不了了.说说悲惨的遭遇吧. 起源:高射炮打苍蝇,驴受伤了 Android一个纯技术网站 ...

  6. Android程序员必知必会的网络通信传输层协议——UDP和TCP

    1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯技术这一块)的开发者来说,网络编程是基础中的基础,只有更好地理解相关基础知识,对于应用层的开发才能做到游刃有余. 对于Android ...

  7. 迈向高阶:优秀Android程序员必知必会的网络基础

    1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...

  8. IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架

    每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的*,有的*能提高软件性能,而有的*似乎是以牺牲性能为代价换 ...

  9. Android 程序员必须知道的 53 个知识点

    1. android 单实例运行方法 我们都知道 Android 平台没有任务管理器,而内部 App 维护者一个 Activity history stack 来实现窗口显示和销毁,对于常规从快捷方式 ...

随机推荐

  1. java第六次作业(老师讲过后)

    import java.util.*; public class Draw { private ArrayList list; public Draw() { list= new ArrayList( ...

  2. Win10 无法完全关机问题

    Win10是重新安装的.开机运行时间长了或者跑的东西多了.关机,键盘灯还是亮的,要强制按电源键关机才行. 问题解决:从网上搜以为是显卡驱动问题,上官网更新最新驱动,结果还是关不了机.偶然间搜到是Int ...

  3. eclipse根据父类打开子类快捷键

    1.打开类 2.双击选中 3.Ctrl+T,打开实现类

  4. CSUFT 1003 All Your Base

    1003: All Your Base Time Limit: 1 Sec      Memory Limit: 128 MB Submit: 4      Solved: 2 Description ...

  5. 【读书笔记】Redis入门

    1:Redis概览 Remote Dictionary Server 远程字典服务 Redis是基于内存的存储 在一台普通的笔记本上,Redis每秒的读取速度可以达到10万 内存读取数据,断电的时候数 ...

  6. JSP——九大内置对象和其四大作用域

    一.JSP九大内置对象: JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象. Request:代表的是来自客户端的请求,例如我们在FORM ...

  7. Ajax 跨域提交表单

    跨域提交表单,前端ajax不用做任何修改, 只需要在后端调用的方法里面添加一行代码即可. .NET 版 HttpContext.Response.AddHeader("Access-Cont ...

  8. zabbix通过agent添加监控项的步骤

    1.确定要监控的对象的指标 2.在agent端上,把如何具体获取指标写成shell脚本,并放在一个和其它agent端统一的位置上 3.在agent端上,自定义监控项key值,配置zabbix_agen ...

  9. &lbrack;OpenCV-Python&rsqb; OpenCV 中的图像处理 部分 IV &lpar;三)

    部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 19 Canny 边缘检测 目标 • 了解 Canny 边缘检测的概念 • 学习函数 cv2.Canny() 1 ...

  10. 使用Java客户端对Redis进行操作

    一.背景 上篇文章我们介绍了如何在centos7下面进行安装单机版redis以及redis集群.这篇文章,我们来聊一聊如何使用java客户端来进行操作redis.我们知道redis的java客户端有很 ...