美文网首页
Android基础知识点

Android基础知识点

作者: zekers | 来源:发表于2018-03-29 17:04 被阅读0次

1.四大组件是什么

答:

  1. Activity;
  2. Service;
  3. Broadcast reciver;
  4. Content Provider;

2.四大组件的生命周期和简单用法

答:

1.Activity:
简单用法:

  1. 用法:一个Activity通常就是一个单独的界面,在其上面承载着能与用户进行交互的控件,通过这些控件监听用户行为并对用户行为作出反馈。
  2. 启动方式:Context.startActivity或Context.startActivityForResult。必须先在AndroidManifest中注册。

生命周期:
Activity的生命周期主要由以下六种状态构成,onCreate(创建),onStart(启动),onResume(开始),onPause(暂停),onStop(停止),onDestory(摧毁),onRestart(再启动)构成。并在以下六种状况下依顺序进入状态:

  1. 启动Activity:onCreate->onStart->onResume;
  2. 进入透明状态:onResume->onPause;
  3. 从透明状态恢复:onPause->onResume;
  4. 进入后台:onResume->onPause->onStop;
  5. 从后台恢复到前台:onStop->onRestart->onStart->onResume;
  6. 关闭Activity:onResume->onPause->onStop->onDestory;

而且Activity非正常关闭时,如横竖转换等,会在onPause或onStop方法前面调用onSaveInstanceState方法,在重新启动时,会在对应的onStart或onResume前调用onRestoreInstanceState方法。

2.Service:
简单用法:

  1. 用法:Service有别于Activity,它不存在界面,主要运行于后台。可以单独存在于另外一条非UI线程中,也可以运行于其他程序的上下文中,通常用于处理耗时型的任务,如下载和接受消息等。
  2. 启动方式:Context.startService或Context.bindService。

生命周期:
Service的生命周期随着两种不同的启动方式而有所不同:

  1. startService:onCreate->onStartCommand->onDestory;
  2. bindService:onCreate->onBind->onUnBind->onDestory;

3.BroadcastReciver
简单用法:

  1. 用法:可以通过BroadcastReciver对外部事件进行过滤,仅对需求的外部事件(如当电话呼入,网络状态修改时)进行接受并作出响应。
  2. 启动方式:AndroidManifest中静态注册或动态注册后,通过Content.sendBroadcast唤醒。

生命周期:
BroadcastReceiver的生命周期很短,具体调用是:调用对象->onReceive->结束。即只有onRecive一个关键状态,而且onReceive必须在10秒内结束工作。

4.ContentProvider
简单用法:

  1. 用法:ContentProvider是一种内容共享组件,他通过向其他应用提供接口,让数据以表的形式共享给其他应用,使其他应用以类似访问数据库的方式访问程序数据。同时不管该程序是否启动,其他程序都能访问该接口。
  2. 启动方式:我们不会启动程序的ContentProvider,而是注册ContentProvider的地址后,让其他程序通过ContentResolver的方法调用我们提供的地址获取数据。

生命周期:
Content没有Activity那样复杂的生命周期,只有简单的onCreate过程。

3.Activity之间的通信方式

答:

  1. 通过Intent传递数据;
  2. 通过Application持有数据传递;
  3. 通过静态变量传递数据;
  4. 通过Eventbus传递数据;
  5. 通过StartActivityForResult和onActivityResult传递数据;
  6. 通过数据存储,数据持久化,传递数据。
  7. 通过单例类传递数据;

4.Activity各种情况下的生命周期

答:
Activity的生命周期主要由以下六种状态构成,onCreate(创建),onStart(启动),onResume(开始),onPause(暂停),onStop(停止),onDestory(摧毁),onRestart(再启动)构成。并在以下六种状况下依顺序进入状态:

  1. 启动Activity:onCreate->onStart->onResume;
  2. 进入透明状态:onResume->onPause;
  3. 从透明状态恢复:onPause->onResume;
  4. 进入后台:onResume->onPause->onStop;
  5. 从后台恢复到前台:onStop->onRestart->onStart->onResume;
  6. 关闭Activity:onResume->onPause->onStop->onDestory;

而且Activity非正常关闭时,如横竖转换等,会在onPause或onStop方法前面调用onSaveInstanceState方法,在重新启动时,会在对应的onStart或onResume前调用onRestoreInstanceState方法。

5.横竖屏切换的时候,Activity各种情况下的生命周期

答:
横竖屏切换有三种情况:

  1. 不设置Activity的android:configChanges时:横转为竖屏时:onResume->onSaveInstanceState->onPause->onStop->onDestory->onCreate->onStart->onRestoreInstanceState->onResume;但竖屏转为横屏时,上面的生命周期走两次。
  2. 设置Activity的android:configChanges="orientation"时:不管横转为竖屏还是竖屏转为横屏:onResume->onSaveInstanceState->onPause->onStop->onDestory->onCreate->onStart->onRestoreInstanceState->onResume。
  3. 设置Activity的android:configChanges="orientation|keyboardHidden"时:不管如何切换,程序都是保持onResume状态,不销毁Activity。但是会调用onConfigurationChanged方法。

6.Activity与Fragment之间的生命周期比较

答:
Fragment负载在Activity上面,基本上Fragment的生命周期与Activity的生命周期同步,但是两者方法数不同和顺序有所区别,下面具体说明。

  1. Activity生命周期有七个方法,Fragment有十一个方法;
  2. 创建时两者调用的方法和顺序:Activity:onCreate->Fragment:onAttach->Fragment:onCreate->Fragment:onCreateView->Fragment:onActivityCreated;
  3. 其他的一些对应的方法和顺序:Activity:onStart->Fragment:onStart;Activity:onResume->Frament:onResume;Fragment:onPause->Activity:onPause;Fragment:onStop->Activity:onStop;
  4. 摧毁是两者调用的方法和顺序:Fragment:onDestoryView->Fragment:onDestory->Fragment:onDetach->onActivity:onDestory;

7.Activity上有Dialog的时候按Home键时的生命周期

答:
这里分两种情况去分析:一种情况下是我们使用正常的Dialog,这种Dialog是Activity的组件,所以Activity处于运行在前台的状态,如果我们这是按下Home键,Activity将进入后台,此时回调用onPause->onStop方法。一种情况下是使用另一个theme为Dialog的Activity,当这个Dialog存在时,Activity进入透明状态即调用onPause,当点击Home键后,Activity调用onStop方法。

8.两个Activity之间跳转必然会执行哪几个方法?

答:
存在A,B两个Activity;

  1. 当A调换到B时,会先调用onPause方法;
  2. 如果B存在于Activity栈中,B会调用onReStart,onStart,onResume方法,如果B不存在于Activity栈中,B会调用onCreate,onStart,onResume方法;
  3. 当B调用完onResume方法后,如果B不是透明窗体或对话框,则A调用onStop方法,否则A不调用onStop方法。

9.前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命周期回调方法。

答:

  1. 前台切换到后台:->onPause->onStop;
  2. 回到前台:->onRestart->onStart->onResume;
  3. 弹出Dialog:如果Dialog是Activity,则调用onPause,否则不调用。

待续

相关文章

网友评论

      本文标题:Android基础知识点

      本文链接:https://www.haomeiwen.com/subject/mlfvcftx.html