前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android程序员问答题

Android程序员问答题

作者头像
达达前端
发布于 2022-04-28 11:26:48
发布于 2022-04-28 11:26:48
76000
代码可运行
举报
文章被收录于专栏:达达前端达达前端
运行总次数:0
代码可运行

前言

最近三个月内,不断地进行移动应用开发在线测试题,也积累了不一样的知识。这也将对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,必定需要理解生命周期图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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发送的广播事件。广播分两种:有序广播和无序广播。无序广播:完全异步,逻辑上可以被任何广播接收者接收到。有序广播:按照被接收者的优先顺序,在被接受者中传播。

注册广播接收者

静态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<receiver android:name=".BroadcastReceiver1">
    <intent-filter>
        <action android:name="android.intent.action.CALL">
    </intent-filter>
</receiver>

动态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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元左右。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
线性代数--MIT18.06(一)
从行的角度来看,三个三元一次方程表示三维空间中的三个平面,如果三个平面相交于一点,那么交点的坐标即为方程组的解。
fireWang
2019/03/13
1.1K0
线性代数--MIT18.06(十六)
对于求解最佳的拟合直线,我们自然是希望直线离三个点的距离之和是最小的,这个距离实际上就是
fireWang
2019/03/13
5230
线性代数--MIT18.06(八)
的解,假如有解的话,我们可以将其分解成两部分,这样我们就可以利用上一讲的成果。即:
fireWang
2019/03/13
3990
线性代数--MIT18.06(七)
之前我们考虑主元主要是从行的角度去看,现在我们主要考虑列的情况,我们称主元所在的列为主元列(pivot columns),主元的个数我们称为矩阵的秩(Rank,简写为r),没有主元的列称为自由变量列(free variable columns), 自由变量的个数也就很好的理解为 n-r 了,在这里就是 4-2=2 。 消元之后我们进行回代的步骤,也就求得解了,即
fireWang
2019/04/24
7050
线性代数--MIT18.06(七)
线性代数--MIT18.06(七)
之前我们考虑主元主要是从行的角度去看,现在我们主要考虑列的情况,我们称主元所在的列为主元列(pivot columns),主元的个数我们称为矩阵的秩(Rank,简写为r),没有主元的列称为自由变量列(free variable columns), 自由变量的个数也就很好的理解为 n-r 了,在这里就是 4-2=2 。 消元之后我们进行回代的步骤,也就求得解了,即
fireWang
2019/03/13
9360
线性代数--MIT18.06(三十五)
行不满秩,因此其不满秩,那么它不可能为正定矩阵,可以为半正定矩阵。 于是我们也就知道
fireWang
2019/03/13
6320
线性代数--MIT18.06(五)
继续上一讲的内容,由上一讲可知我们可以将系数矩阵 A 分解为下三角矩阵和上三角矩阵的乘积,但是我们给定了一个前提假设—— A 在消元过程中不做换行,这一次我们来解决如果在消元过程中存在换行的情况。
fireWang
2019/03/13
5300
线性代数--MIT18.06(二)
上一讲我们对于线性方程组可以使用矩阵 Ax=b来表示,这一讲求解该等式,对于矩阵,使用矩阵消元法。
fireWang
2019/03/13
4130
线性代数--MIT18.06(十五)
投影我们已经知道它的定义了,那么我们为什么要投影呢?这就和我们之前的章节联系起来了,对于
fireWang
2019/03/13
4020
线性代数--MIT18.06(十二)
在之前的课程中,列举了很多的矩阵,实际上它们都来自实际问题,而不是简简单单随便想出来的,这些矩阵都可以描述实际问题的拓扑结构,我们在处理这些实际问题时需要搞清楚它们的拓扑结构。
fireWang
2019/04/24
3950
线性代数--MIT18.06(十二)
线性代数--MIT18.06(三)
,我们依然可以使用矩阵消元的形式来求解,只不过要比我们之前提到的矩阵消元多做一些消元而已,这就是Gauss-Jordan法。
fireWang
2019/04/24
4570
线性代数--MIT18.06(三)
线性代数--MIT18.06(六)
由上一讲的内容,我们知道了向量空间和子空间的定义,那么如何使用矩阵来构造子空间呢?
fireWang
2019/03/13
4650
线性代数--MIT18.06(二十三)
在上一讲我们已经介绍了特征值和特征向量的一种应用,那就是求解差分方程,这一讲,讲解其另一个应用——求解微分方程,当然,首先从一阶常系数微分方程开始讲解。
fireWang
2019/03/13
5390
线性代数--MIT18.06(二十八)
在第二十六讲已经讲解了正定矩阵的一些性质,这一讲将给出判断矩阵为正定矩阵的判定条件,同时给出几何解释
fireWang
2019/03/13
1.4K0
线性代数--MIT18.06(三十二)
会有很多的数据冗余,并且数据量太大,系统会无法承载,数据的传输也是一个很大的问题。因此,会对图像进行压缩,常用的图像压缩技术有 JPEG,本质上就是基变换,也就是使用更好的基来重现图像。
fireWang
2019/03/13
5890
线性代数--MIT18.06(十一)
。 若记 M 为所有 3×3 矩阵构成的矩阵空间,则所有的 3×3 对称矩阵构成的矩阵空间 S 和 3×3 上三角矩阵构成的矩阵空间 U 都是 M 的子空间。
fireWang
2019/03/13
7050
线性代数--MIT18.06(十)
列空间和零空间我们已经在第六讲讲解过了,在这里我们还将讨论他们所在空间的维数,以及它们自身的维数和构成它们的基。
fireWang
2019/03/13
9530
线性代数--MIT18.06(九)
上述两个描述是等价的,为什么呢?实际上我们可以将第一个定义的描述写成矩阵形式,就是
fireWang
2019/03/13
5880
线性代数--MIT18.06(四)
(http://open.163.com/movie/2016/4/V/0/MBKJ0DQ52_MBLPMH3V0.html)
fireWang
2019/03/13
4720
线性代数--MIT18.06(二十八)
在第二十六讲已经讲解了正定矩阵的一些性质,这一讲将给出判断矩阵为正定矩阵的判定条件,同时给出几何解释
fireWang
2019/04/24
4990
线性代数--MIT18.06(二十八)
相关推荐
线性代数--MIT18.06(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档