Android为什么要设计4大组件,他们之间的联系,不设计行不行?

 我来答
帖发梓益氏1721
2013-11-03 · TA获得超过178个赞
知道答主
回答量:127
采纳率:100%
帮助的人:61.3万
展开全部
二,view的刷新,之前说过 三,IPC及原理 四,Android多线程 五,Android为什么要设计4大组件,他们之间的联系,不设计行不行(主要是为了实现MVC模式,然而java中最难的模式也是这个,很少有产品能将这个模式做得很好【Technicolor的 面试官问的这个】)六,service的周期,activity的周期,谈下你对Android内部应用的了解,比如他做电话,以及联系人等等应用。框架层有很多东西还是多看看,熟悉Android怎么做的,不管你做应用程开发还是应用框架层开发很有好处的。 在就是你项目经验,突出你遇到什么难点,然后是怎么解决的!尽量将每个技术点凸显出来,当然 面试官有时候会为了体现你是否真正做过,他会问你,你在这个应用中做那个模块,用了多少个类之类的问题。 偶尔有的 面试官会问你,你用过Android自带的单元测试了没,怎么用的? 当然我 面试过很多家单位,有的是做平板,手机,数字电视,有的是做出个erp之类的客户端等等,出于前面的三个,基本上都是将Android的全部改掉,如果真正要做Android的话,大家要学的还很多。 总之,一句话,什么样的 面试官都有,去 面试的时候要做好一切心理准备,不管是技术还是基础都得扎实。一个人的交谈能力也很重要,总之不是非常标准的普通话,最起码你说的得让别人听得懂,而且得把 面试官讲得非常彻底,这样你获得offer的机会更大,谈工资也有优势~~当然曾经一家公司的 面试官跟我说过,技术是不惜钱的,只要你有能力,多少钱他都请。 确实,来北京求职期间,牛人真的很多,而且有的 面试官也非常好,给了很多忠肯的意见。并不是每个 面试官都特想为难你的~最主要的还是想知道你的技术,因为他们也是吃公司饭,得为这个负责。 1.View如何刷新? 2.DDMS与TraceView的区别? 3.activity被回收了怎么办? 4.在Java中如何引入C语言? 答案 1.View 可以调用invalidate()和postInvalidate()这两个方法刷新 2.DDMS是一个程序执行查看器,在里面你可以看见线程和堆栈等信息,TraceView是程序性能分析器 3.activity回收了,那就只有另起了 4.java调用C语言程序,可以用JNI接口来实现 上面答案仅作参考,毕竟我个人能力也有限嘛,难免会回答错误,呵呵..... 解答: 1.View受系统刷新(系统内部有个循环,监控事件、做业务处理、绘UI),可以用postInvalidate()促使系统刷新。 2.(还真不知道) 3.请参照Activity生命周期,如果被系统destroy了,也就是说的回收,只有从新start了 4.通过JNI调用。
三星问答服务
2017-07-11 · 三星手机,家电产品客户服务技术支持
三星问答服务
三星产品使用咨询服务支持
向TA提问
展开全部
"如需了解三星产品的详细机型信息,请登陆三星官网点击右上角放大镜图标输入型号查询。
如果需要购买产品,可到正规的专卖店购买,例如:三星指定的专卖店、三星商城、天猫三星官方旗舰店、大型购物商城等进行购买"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sky宝贝杰儿
2015-10-21 · 超过11用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:25.5万
展开全部
想学习Android这四大组件就必须要懂,其中的缘由关系有点多,在此我给你推荐一本书叫《第一行代码》,希望能给你帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千锋教育
2015-12-02 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
  1.Activity :
  应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
  Activity之间通过Intent进行通信。在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据。
  典型的动作类型有:M AIN(activity的门户)、VIEW、PICK、EDIT 等。而动作对应的数据则以URI 的形式进行表示。例如:要查看一个人的联系方式,你需要创建一个动作类型为VIEW 的intent,以及一个表示这个人的URI。
  与之有关系的一个类叫IntentFilter。相对于intent 是一个有效的做某事的请求,一个intentfilter 则用于描述一个activity(或者IntentReceiver)能够操作哪些intent。一个activity 如果要显示一个人的联系方式时,需要声明一个IntentFilter,这个IntentFilter 要知道怎么去处理VIEW 动作和表示一个人的URI。IntentFilter 需要在AndroidManifest.xml 中定义。通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时,activity 将会调用startActivity(Intent myIntent)方法。然后,系统会在所有安装的应用程序中定义的IntentFilter 中查找,找到最匹配myIntent 的Intent 对应的activity。新的activity 接收到myIntent 的通知后,开始运行。当startActivity 方法被调用将触发解析myIntent 的动作,这个机制提供了两个关键好处:
  A、Activities 能够重复利用从其它组件中以Intent 的形式产生的一个请求;
  B、Activities 可以在任何时候被一个具有相同IntentFilter 的新的Activity 取代。
  2.BroadcastReceive广播接收器:
  你的应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用NotificationManager 来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
  广播类型:
  普通广播,通过Context.sendBroadcast(Intent myIntent)发送的
  有序广播,通过Context.sendOrderedBroadcast(intent, receiverPermission)发送的,该方法第2个参数决定该广播的级别,级别数值是在 -1000 到 1000 之间 , 值越大 , 发送的优先级越高;广播接收者接收广播时的级别级别(可通过intentfilter中的priority进行设置设为2147483647时优先级最高),同级别接收的先后是随机的, 再到级别低的收到广播,高级别的或同级别先接收到广播的可以通过abortBroadcast()方法截断广播使其他的接收者无法收到该广播,还有其他构造函数
  异步广播,通过Context.sendStickyBroadcast(Intent myIntent)发送的,还有sendStickyOrderedBroadcast(intent, resultReceiver, scheduler, initialCode, initialData, initialExtras)方法,该方法具有有序广播的特性也有异步广播的特性;发送异步广播要: <uses-permission android:name="android.permission.BROADCAST_STICKY" />权限,接收并处理完Intent后,广播依然存在,直到你调用removeStickyBroadcast(intent)主动把它去掉
  注意:发送广播时的intent参数与Contex.startActivity()启动起来的Intent不同,前者可以被多个订阅它的广播接收器调用,后者只能被一个(Activity或service)调用
  监听广播Intent步骤:
  1> 写一个继承BroadCastReceiver的类,重写onReceive()方法,广播接收器仅在它执行这个方法时处于活跃状态。当onReceive()返回后,它即为失活状态,注意:为了保证用户交互过程的流畅,一些费时的操作要放到线程里,如类名SMSBroadcastReceiver
  2> 注册该广播接收者,注册有两种方法程序动态注册和AndroidManifest文件中进行静态注册(可理解为系统中注册)如下:
  静态注册,注册的广播,下面的priority表示接收广播的级别"2147483647"为最高优先级
  <receiver android:name=".SMSBroadcastReceiver" >
  <intent-filter android:priority = "2147483647" >
  <action android:name="android.provider.Telephony.SMS_RECEIVED" />
  </intent-filter>
  </receiver >
  动态注册,一般在Activity可交互时onResume()内注册BroadcastReceiver
  IntentFilter intentFilter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
  registerReceiver(mBatteryInfoReceiver ,intentFilter);
  //反注册
  unregisterReceiver(receiver);
  3.Service 服务:
  一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。
  比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,媒体播放器这个activity 会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。同时,系统也将保持这个service 一直执行,直到这个service 运行结束。另外,我们还可以通过使用Context.bindService()方法,连接到一个service 上(如果这个service 还没有运行将启动它)。当连接到一个service 之后,我们还可以service 提供的接口与它进行通讯。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。
  Service使用步骤如下
  1>继承service类
  2>AndroidManifast.xml配置清单文件中<application>节点里对服务进行配置
  <service name=".SMSService"/>
  服务不能自己运行,需要通过Contex.startService()或Contex.bindService()启动服务
  通过startService()方法启动的服务于调用者没有关系,即使调用者关闭了,服务仍然运行想停止服务要调用Context.stopService(),此时系统会调用onDestory(),使用此方法启动时,服务首次启动系统先调用服务的onCreate()-->onStart(),如果服务已经启动再次调用只会触发onStart()方法
  使用bindService()启动的服务与调用者绑定,只要调用者关闭服务就终止,使用此方法启动时,服务首次启动系统先调用服务的onCreate()-->onBind(),如果服务已经启动再次调用不会再触发这2个方法,调用者退出时系统会调用服务的onUnbind()-->onDestory(),想主动解除绑定可使用Contex.unbindService(),系统依次调用onUnbind()-->onDestory();
  4.Content Provider内容提供者 :
  android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式,
  其他应用可以通过ContentResolver类(见ContentProviderAccessApp例子)从该内容提供者中获取或存入数据.(相当于在应用外包了一层壳),
  只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中
  它的好处:统一数据访问方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式