android的主要基础知识,Android基础知识点

1.四大组件是什么

答:

Activity;

Service;

Broadcast reciver;

Content Provider;

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

答:

1.Activity:

简单用法:

用法:一个Activity通常就是一个单独的界面,在其上面承载着能与用户进行交互的控件,通过这些控件监听用户行为并对用户行为作出反馈。

启动方式:Context.startActivity或Context.startActivityForResult。必须先在AndroidManifest中注册。

生命周期:

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

启动Activity:onCreate->onStart->onResume;

进入透明状态:onResume->onPause;

从透明状态恢复:onPause->onResume;

进入后台:onResume->onPause->onStop;

从后台恢复到前台:onStop->onRestart->onStart->onResume;

关闭Activity:onResume->onPause->onStop->onDestory;

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

2.Service:

简单用法:

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

启动方式:Context.startService或Context.bindService。

生命周期:

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

startService:onCreate->onStartCommand->onDestory;

bindService:onCreate->onBind->onUnBind->onDestory;

3.BroadcastReciver

简单用法:

用法:可以通过BroadcastReciver对外部事件进行过滤,仅对需求的外部事件(如当电话呼入,网络状态修改时)进行接受并作出响应。

启动方式:AndroidManifest中静态注册或动态注册后,通过Content.sendBroadcast唤醒。

生命周期:

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

4.ContentProvider

简单用法:

用法:ContentProvider是一种内容共享组件,他通过向其他应用提供接口,让数据以表的形式共享给其他应用,使其他应用以类似访问数据库的方式访问程序数据。同时不管该程序是否启动,其他程序都能访问该接口。

启动方式:我们不会启动程序的ContentProvider,而是注册ContentProvider的地址后,让其他程序通过ContentResolver的方法调用我们提供的地址获取数据。

生命周期:

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

3.Activity之间的通信方式

答:

通过Intent传递数据;

通过Application持有数据传递;

通过静态变量传递数据;

通过Eventbus传递数据;

通过StartActivityForResult和onActivityResult传递数据;

通过数据存储,数据持久化,传递数据。

通过单例类传递数据;

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

答:

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

启动Activity:onCreate->onStart->onResume;

进入透明状态:onResume->onPause;

从透明状态恢复:onPause->onResume;

进入后台:onResume->onPause->onStop;

从后台恢复到前台:onStop->onRestart->onStart->onResume;

关闭Activity:onResume->onPause->onStop->onDestory;

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

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

答:

横竖屏切换有三种情况:

不设置Activity的android:configChanges时:横转为竖屏时:onResume->onSaveInstanceState->onPause->onStop->onDestory->onCreate->onStart->onRestoreInstanceState->onResume;但竖屏转为横屏时,上面的生命周期走两次。

设置Activity的android:configChanges="orientation"时:不管横转为竖屏还是竖屏转为横屏:onResume->onSaveInstanceState->onPause->onStop->onDestory->onCreate->onStart->onRestoreInstanceState->onResume。

设置Activity的android:configChanges="orientation|keyboardHidden"时:不管如何切换,程序都是保持onResume状态,不销毁Activity。但是会调用onConfigurationChanged方法。

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

答:

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

Activity生命周期有七个方法,Fragment有十一个方法;

创建时两者调用的方法和顺序:Activity:onCreate->Fragment:onAttach->Fragment:onCreate->Fragment:onCreateView->Fragment:onActivityCreated;

其他的一些对应的方法和顺序:Activity:onStart->Fragment:onStart;Activity:onResume->Frament:onResume;Fragment:onPause->Activity:onPause;Fragment:onStop->Activity:onStop;

摧毁是两者调用的方法和顺序: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;

当A调换到B时,会先调用onPause方法;

如果B存在于Activity栈中,B会调用onReStart,onStart,onResume方法,如果B不存在于Activity栈中,B会调用onCreate,onStart,onResume方法;

当B调用完onResume方法后,如果B不是透明窗体或对话框,则A调用onStop方法,否则A不调用onStop方法。

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

答:

前台切换到后台:->onPause->onStop;

回到前台:->onRestart->onStart->onResume;

弹出Dialog:如果Dialog是Activity,则调用onPause,否则不调用。

待续

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值