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元左右。
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己。
欢迎大家关注我的微信公众号:「醉翁猫咪」