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

【Android】期末简答题

作者头像
天天Lotay
发布于 2022-12-02 01:43:37
发布于 2022-12-02 01:43:37
1.1K00
代码可运行
举报
文章被收录于专栏:嵌入式音视频嵌入式音视频
运行总次数:0
代码可运行

1.Activity类中定义了7个回调方法,分别是什么?

我的答案:

  1. onCreate()这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动第一次被创建的时候调用。你应该在这个方法中完成活动的初始化操作,比如说加载布局、绑定事件等。
  2. onStart()这个方法在活动由不可见变为可见的时候调用。
  3. onResume()这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。
  4. onPause()这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗 CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。
  5. onStop()第一行代码——Android58这个方法在活动完全不可见的时候调用。它和 onPause()方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么 onPause()方法会得到执行,而 onStop()方法并不会执行。
  6. onDestroy()这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。
  7. onRestart()这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。以上七个方法中除了 onRestart()方法,其他都是两两相对的,从而又可以将活动分为三种生存期。

2.简述Activity的3种生存期。

我的答案:

  1. 完整生存期活动在 onCreate()方法和 onDestroy()方法之间所经历的,就是完整生存期。一般情况下,一个活动会在 onCreate()方法中完成各种初始化操作,而在 onDestroy()方法中完成释放内存的操作。
  2. 可见生存期活动在 onStart()方法和 onStop()方法之间所经历的,就是可见生存期。在可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。我们可以通过这两个方法,合理地管理那些对用户可见的资源。比如在 onStart()方法中对资源进行加载,而在 onStop()方法中对资源进行释放,从而保证处于停止状态的活动不会占用过多内存。
  3. 前台生存期活动在 onResume()方法和 onPause()方法之间所经历的,就是前台生存期。在前台生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行相互的,我们平时看到和接触最多的也这个状态下的活动。

3.活动在生命周期中最多中能有几种状态?

我的答案: 一个活动在其存在,也就是生命周期中一共存在四种状态: 1.运行:位于栈顶,系统最不愿意回收的活动。 2.暂停:不是栈顶的位置,但是在界面依旧可见,并不是每一个活动都占满整个屏幕,当系统内存比较低的时候会回收。 3.停止:不是栈顶的位置,完全不可见,仍然会存一些成员变量的内容,当其他 地方需要内存的时候会回收。 4.销毁:从返回栈中移除之后,系统最喜欢的就是回收这种活动。

4.Android应用程序的四大核心组件分别是什么?

我的答案: activity,service,content provider,broadcast receiver

5.分别总结出显式Intent与隐式Intent的使用方法?

我的答案: 创建隐式Intent的主要的方法: 1.初始带Action:Intent(String action) 2.空的Intent: Intent(); 3.初始同时带Action和Uri: Intent(String action, Uri uri); 创建显式Intent的主要的方法: 1.创建方法。Intent intent = newIntent(Context context,Class<?> class); 2.创建方法。Intent intent = newIntent(Context context,Class<?> class);

6.Intent传递数据有两种方法?

我的答案: 一:使用putExtra() (1)开始传递:FirstActivity.java (2)接收数据:SecondActivity.java (3)传递结果: 二:使用bundle传递数据 (1)开始传递:FirstActivity.java (2)接收数据:SecondActivity.java (3)结果显示:

7.简述Serializable传递对象的步骤。

我的答案: 实现序列化(保存到一个文件)的步骤 1.Make a FileOutputStream FileOutputStream fs = new FileOutputStream(“foo.ser”); 2.Make a ObjectOutputStream ObjectOutputStream os = new ObjectOutputStream(fs); 39write the object os.writeObject(myObject1); 4.close the ObjectOutputStream os.close();

8.简述活动的四种启动模式。

我的答案: 活动(activity)的四种启动模式 1.standard模式 它是活动默认的启动模式,在不进行显示制定的情况下,所有活动都会自动使用这种启动模式。每次通过此模式来启动activity时,android总会为目标activity启动一个新的实例。 2.singleTop模式 它和standard模式有点类似,但是又一点是不同的:此模式下当将要被启动的activity已经位于Task栈顶时,系统不会重新创建目标activity实例,而是复用已有的activity实例。 如果将要被启动的activity没有位于Task栈顶时,此时系统会重新创建目标activity的实例,并将它加载到Task栈顶上。 3.singleTask模式 使用这种加载模式的activity在同一个Task内只有一个实例,当系统采用此singleTask模式启动activity时,可以分为三种情况: <1> 如果将要启动的activity不存在,系统将会创建目标activity实例,并将它加入到Task栈顶。 <2> 如果将要启动的activity已经位于Task栈顶,此时与singleTop模式的行为相同。 <3> 如果将要启动的activity已经存在,但没有位于Task栈顶,系统将会把位于该activity上面的所有activity移出Task栈,从而使得目标activity转入栈顶。 4.singleInstance模式 此加载模式下,无论从哪个Task中启动目标activity,只会创建一个目标activity实例,并会使用一个全新的Task栈来装载该activity实例。当系统采用singleInstance模式启动activity时,可以分为两种情况: <1> 如果将要启动的activity不存在,系统会先创建一个全新的Task、再创建目标activity的实例,并将它加入新的Task的栈顶。 <2> 如果将要启动的activity已经存在,无论它位于哪个应用程序中,无论它位于哪个Task中,系统将会把该activity所在的Task转到前台,从而使用该activity显示出来。 tips:需要指出的是,采用singleInstance模式加载activity总是位于Task栈顶,采用singleInstance模式加载activity所在Task只包含该activity。

9.什么是程序、进程、线程?

我的答案: 程序(program)是实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。为实现预期目的而进行的操作的一系列语句和指令。一般分为系统程序和应用程序量大类。计算机中的程序在港澳台地区称为程式。程序就是为使用电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令集合。   进程(有时被称为重量级进程)是程序的一次执行任务。每一个进程都有自己的地址空间、内存、数据栈以及其它记录器运行轨迹的辅助数据。操作系统管理子其运行的所有进程,并为这些进程公平地分配时间。   不过各个进程都有自己的内存空间,数据栈等,所以只能使用进程间通讯(IPC),而不能直接共享信息。   线程,有时被称为轻量级进程(lightweight process,LWP)是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他吸纳成共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,那就是线程本身。

10.Android进程,按照优先顺序排列,分为哪几类?

我的答案: Andrid 5个进程及重要优先级 前台进程>可见进程>服务进程>后台进程>空进程, 它们的回收优先级则反之

11.对Android线程的理解?

我的答案: 在日常项目中比较常用的多线程操作主要有: 1.Handler

2.AsyncTask

3.IntentService

一:handler的理解 优点:对于对后台任务时,简单清晰 缺点:对于操作单个后台任务,代码过于繁琐 具体操作: 在主线程中创建Handler对象并实现handlmessage()方法, 创建runnable线程,先在线程中执行耗时操作, 开启一个线程会相应的产生一个looper,在初始化looper的时候会创建一个消息队列MessageQueue(); 执行完耗时操作,通过handler将消息发送到消息队列中、、looper轮询消息队列将消息取出来交给Handler, Handler接收到取出来的消息,并根据消息类型做出相应的处理

二:AsyncTask的理解 优点:操作简单方便,过程可控 缺点:对于多异步操作更新UI会变得很繁琐 具体操作: onPreExecute()运行在主线程中,开启线程前的准备操作, doInBackground()运行在子线程中, onPreExecute()之后的操作,用于处理耗时操作,通过调用publishProcess()向 onProcessUpdata()推送消息 onProcessUpdata()运行在主线程中,当调用 publishProcess()方法时就会开启此方法,接收到推送过来的数据,更新UI进度页面 onPostExecute()运行在主线程中,当子线程耗时操作执行完毕后会调用此方法, doInBackground()返回的参数传递到这里来用于更新UI 调用execute()方法开启AsyncTask,类似runnable的start()方法

三:IntentService的理解 IntentService和普通的Service区别在于,IntentService在oncreate()方法中单独开启一个线程用于耗时操作 通过onHandleIntent(Intent intent)方法来处理耗时操作 在耗时操作执行完毕之后,会自动关闭service不用手动关闭 如果同时new出多个IntentService对象进行耗时操作,oncreate()和ondestory()方法会执行一次,onstart()、onstartcommand()、onHandleIntent()会执行多次。 执行完毕自动关闭service

12.什么是服务。

我的答案: Service是一个应用组件,它用来在后台完成一个时间跨度比较大的工作,且没有关联任何界面。(生命周期在应用程序进程的主线程运行) 一个Service可以完成的工作:访问网络(在Service中启动分线程)、播放音乐、文件IO操作、大数据量的数据库操作等。如果需要在Service中处理一些网络连接等耗时的操作,那么应该将这些任务放在分线程中处理,避免在主线程中阻塞用户界面。 特点:Service在后台运行,不用与用户进行交互。即使应用退出,服务也不会停止。当应用进程被杀死时(例如一键清理),服务便会停止。

13.本地服务与远程服务的优缺点各是什么?

我的答案: 其实都是服务,提供的功能一致,只是一个在本地,一个在其它进程。 本地服务 --local service:服务运行在当前的应用程序里面 远程服务 --remote service:服务运行在其他的应用程序里面

14.如何实现本地服务绑定方式的启动与停止?

我的答案: 服务(Service)的停止和启动

1 .如果service是非绑定的,最终当任务完成时,为了节省系统资源,一定要停止service,可以通过stopSelf()来停止,也可以在其他组件中通过stopService()来停止。 绑定的service可以通过onUnBind()来停止service。

  1. 有了 Service 类我们如何启动他呢,有两种方法: •Context.startService() •Context.bindService()
    1. 在同一个应用任何地方调用startService() 方法就能启动Service 了,然后系统会回调Service 类的 onCreate() 以及 onStartCommand() 方法。这样启动的Service 会一直运行在后台,直到Context.stopService() 或者 StopSelf() 方法被调用。另外如果一个Service 已经被启动,其他代码再试图调用startService() 方法,是不会执行onCreate() 的,但会重新执行一次onStartCommand() 。
    2. 另外一种 bindService() 方法的意思是,把这个Service 和调用 Service 的客户类绑起来,如果调用这个客户类被销毁,Service 也会被销毁。用这个方法的一个好处是,bindService() 方法执行后 Service 会回调上边提到的 onBind() 方法你可以从这里返回一个实现了 IBind 接口的类,在客户端操作这个类就能和这个服务通信了,比如得到 Service 运行的状态或其他操作。如果 Service 还没有运行,使用这个方法启动 Service 就会 onCreate() 方法而不会调用 的onStartCommand()。

15.简述服务的生命周期。我的答案:

1.Call to startService()-----onCreate()-----onStartCommand()-----Service running----(The service is stopped by itself or a client)-----onDestory() 2.Call to bindService()-----onCreate()-----onBind()-----Clients are bounding to service ----(All clients all unbind by calling unbindService)-----onUnBind()----onDestory()

16.简述广播的两种类型。

我的答案: 无序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,并且是没有先后顺序(同时收到)

有序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,但是会按照广播接收者的优先级来决定接收的先后顺序

17.广播的注册方式有哪几种?如何实现?请作一说明。

我的答案: 首先写一个类要继承BroadcastReceiver 第一种:在清单文件中声明,添加 <action android:name=‘android.provider.Telephony.SMS_RECEIVED’) 第二种使用代码进行注册如: IntentFilter filter = new IntentFilter(‘android.provider.Telephony.SMS_RECEIVED’); IncomingSMSReceiver receiver = new IncomgSMSReceiver(); registerReceiver(receiver.filter); 两种注册类型的区别是: 1)第二种不是常驻型广播,也就是说广播跟随程序的生命周期。 2)第一种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

18.Android系统的数据存储方式有哪几种?

我的答案: Android系统有五种数据存储形式,分别是文件存储、SP存储、数据库存储、contentprovider 内容提供者、网络存储。

19.SharedPreferences与普通内存文件存取数据有什么不同?

我的答案: 不同于文件的存储方式,SharedPreferences 是使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences 还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串,读取出来的数据仍然是字符串。

20.SQLite数据库有哪些特点?

我的答案: SQLite的主要特征: 1). 管理简单,甚至可以认为无需管理。 2). 操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。 3). 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、动态库等。 4). 易于维护。 综上所述,SQLite的主要优势在于灵巧、快速和可靠性高。SQLite的设计者们为了达到这一目标,在功能上作出了很多关键性的取舍,与此同时,也失去了一些对RDBMS关键性功能的支持,如高并发、细粒度访问控制(如行级锁)、丰富的内置函数、存储过程和复杂的SQL语句等。正是因为这些功能的牺牲才换来了简单,而简单又换来了高效性和高可靠性。

21.在SQLite数据库中如何创建数据表?

我的答案: 导入SQLite驱动: import sqlite3 连接到SQLite数据库 数据库文件是score.db 如果文件不存在,会自动在当前目录创建: conn=sqlite3.connect(“score.db”) 创建一个Cursor: cursor=conn.cursor() 执行一条SQL语句,创建score表: cursor.execute(‘create table score(id varchar(20) primary key, name varchar(20), st_score varchar(40))’) 继续执行一条SQL语句,插入一条记录: cursor.execute(‘insert into score(id,name,st_score) values (‘1’,‘Jack’,‘89’)’) 提交事务: conn.commit()

22.简述ContentProvider的工作原理。

我的答案: 1.系统管理类app,比如手机助手,有机会频繁使用ContentProvider 2.通讯录或者短信数据,是以ContentProvider的形式提供的 3.ContentProvider的本质是把数据存储在SQLit数据库中 4.ContentProvider读取数据使用了匿名共享内存(ASM),ASM实质上也是个Binder通信

23.平面图形的绘制有哪两种?

我的答案: 1.绘制几何图形 圆,弧,椭圆,矩形,点,三角形等。 Paint paint= new Paint(); paint.setColor(Color.YELLOW); //设置画笔 canvas.drawCircle(x, y, r, paint); //绘制圆形

2.绘制文字 drawText(String text, float x, float y, paint); //在指定的起始位置绘制文字 drawPosText(String text, float[]pos, paint ); //在指定位置数组,每组数据对应1个字的文字

3.绘制路径-Path类 addArc(xxx); //添加弧形路径 addCircle(x, y, r, dir); //添加圆形路径 moveTo(x, y); //移动到起点 close(); //闭合路径

canvas将路径绘制在画布上: canvas.drawPath(path, paint); //绘制路径 canvas.drawTextOnPath(string, path, hOffset, vOffset, paint); //绘制路径文字

4.绘制图片 drawBitmap(Bitmap source, Rect1, Rect2, paint); //从源位图挖取一块 drawBitmap(Bitmap source, x, y, paint); //从指定点绘制位图 // ImageView iv=findViewById(R.id.iv1); BitmapDrawable b=(BitmapDrawable) iv.getDrawable(); if(b!=null&&!b.getBitmap().isRecycled()){ //销毁资源 b.getBitmap().recycle(); }

5.其它: invalidate()触发onDraw()方法进行绘制。 context.getResources().getDisplayMetrics().widthPixels; //获取屏幕的宽度 触摸时间处理: ACTION_DOWN: path.moveTo(x, y) //移动到起始点 ACTION_MOVE: path.quadTo(x1, y1, x2, y2) //跟随路径. ACTION_UP: canvas.drawPath(path, paint); path.reset(); //绘制路径 将图片保存到文件中(png格式): FileOutputStream os=new FileOutputStream(file); //创建流 bitmap.compress(Bitmap.CompressFormat.PNG, 100, os); //定义格式,输出流 os.flush(); //写文件

6.使用选项菜单 @Override public boolean onCreateOptionsMenu(Menu menu){ MenuInflater inflater=new MenuInflater(this); //实例化MenuInflater对象 inflater.inflate(R.menu.toolsMenu, menu); //解析菜单文件 return super.onCreateOptionsMenu(menu); }

@Override public boolean onOptionsItemSelected(MenuItem item){ //菜单项被选择时,作相应的处理 }

24.简述MediaPlayer播放音频的基本步骤。

我的答案: MediaPlayer mp = new MediaPlayer();(1) //创建一个播放器

mp.setDataSource(“rtsp://10.0.149.217:554/stream1”); (2)//参数指定路径或url

mp.prepare(); (3)

mp.start(); (4)

25.调用摄像头拍照如何申请权限?

我的答案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<!-- 摄像头权限 --> 
<uses-permission android:name="android.permission.CAMERA"/> 

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 
<!-- 在SDCard中创建与删除文件的权限 --> 
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> 
<!-- 往SDCard写入数据的权限 --> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<!-- 在SDCard读取数据的权限 --> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

<uses-feature 
    android:name="android.hardware.camera.autofocus" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.Camera" 
    android:required="false" /> 

26.WebView组件的功能是什么?如何使用它加载网页?

我的答案: WebView可以用来展示网页,并且与网页进行交互,加载网页的四种方式1.loadUrl(String url) 2.loadUrl(Strig url,Map<String,String> additionalHttpHeaders) 3.loadData(String data,String mimeType,String encoding) 4.loadDataWithBaseURL(String baseUrl,String data,String data,String mimeType,String encoding,String historyUrl)

27.HttpURLConnection请求的GET和POST方法有什么区别?

我的答案: GET是从服务器上获取数据,POST是向服务器传送数据。 在客户端,GET方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放在HTML HEADER内提交。 对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器用Request.Form获取提交的数据。 GET方式提交的数据不能大于2KB(主要是URL长度限制),而POST则没有此限制。 安全性问题。正如2中提到,使用GET的时候,参数会显示在地址栏上,而POST不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用GET;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用POST为好。

28.如何实现本地服务普通方式(非绑定)方式的启动与停止?

我的答案: 通常有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。 1.通过startService Service会经历 onCreate 到onStart,然后处于运行状态,stopService的时候调用onDestroy方法。 如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。 2.通过bindService Service会运行onCreate,然后是调用onBind, 这个时候调用者和Service绑定在一起。调用者退出了,Srevice就会调用onUnbind->onDestroyed方法。 所谓绑定在一起就共存亡了。调用者也可以通过调用unbindService方法来停止服务,这时候Srevice就会调用onUnbind->onDestroyed方法。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​Activity的生命周期【建议收藏】
掌握Activity的生命周期对于Android开发者来说是非常重要的,当你深入理解Activity的生命周期之后,就可以写出更加流畅而且连贯的代码,
徐建国
2022/06/24
5520
​Activity的生命周期【建议收藏】
Android面试
要想知道如何使用多进程,先要知道Android里的多进程概念。一般情况下,一个应用程序就是一个进程,这个进程名称就是应用程序包名。我们知道进程是系统分配资源和调度的基本单位,所以每个进程都有自己独立的资源和内存空间,别的进程是不能任意访问其他进程的内存和资源的。那如何让自己的应用拥有多个进程?很简单,我们的四大组件在AndroidManifest文件中注册的时候,有个属性是android:process 这里可以指定组件的所处的进程。默认就是应用的主进程。指定为别的进程之后,系统在启动这个组件的时候,就先创建(如果还没创建的话)这个进程,然后再创建该组件。你可以重载Application类的onCreate方法,打印出它的进程名称,就可以清楚的看见了。再设置android:process属性时候,有个地方需要注意:如果是android:process=":deamon",以:开头的名字,则表示这是一个应用程序的私有进程,否则它是一个全局进程。私有进程的进程名称是会在冒号前自动加上包名,而全局进程则不会。一般我们都是有私有进程,很少使用全局进程。他们的具体区别不知道有没有谁能补充一下。 使用多进程显而易见的好处就是分担主进程的内存压力。我们的应用越做越大,内存越来越多,将一些独立的组件放到不同的进程,它就不占用主进程的内存空间了。当然还有其他好处,有心人会发现Android后台进程里有很多应用是多个进程的,因为它们要常驻后台,特别是即时通讯或者社交应用,不过现在多进程已经被用烂了。典型用法是在启动一个不可见的轻量级私有进程,在后台收发消息,或者做一些耗时的事情,或者开机启动这个进程,然后做监听等。还有就是防止主进程被杀守护进程,守护进程和主进程之间相互监视,有一方被杀就重新启动它。应该还有还有其他好处,这里就不多说了。 坏处的话,多占用了系统的空间,大家都这么用的话系统内存很容易占满而导致卡顿。消耗用户的电量。应用程序架构会变复杂,应为要处理多进程之间的通信。这里又是另外一个问题了。
Demo_Yang
2018/10/15
1.1K0
备战金九银十:BAT大厂最爱问的Android核心面试百题详细解析!
Android会同一系列核心应用程序包一起发布,该应用程序包包括Email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
Android技术干货分享
2019/08/02
1.4K0
很全面的Android面试题
这些有些来源于网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有,有可能有些问题讲的不对,能指正的希望大家不吝指教。 Activity 什么是Activity 四大组件之一,一个和用户交的互界面就是一个activity,是所有 View 的容器 Activity 生命周期 生命周期描述的是一个类 从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法. 在这个过程中会针对不同的生命阶段会调用不同的方法 Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回
六月的雨
2018/05/14
6K0
Android面试常问基础知识点(附详细解答)
1)Activity:用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个Activity通常是一个单独的屏幕,Activity通过Intent来进行通信。Android中会维持一个Activity Stack,当一个新Activity创建时,它就会放到栈顶,这个Activity就处于运行状态。 2)Service:服务,运行在手机后台,适合执行不需和用户交互且还需长期运行的任务。 3)ContentProvider:内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过ContentResolver类从该内容提供者中获取或存入数据。它提供了一种跨进程数据共享的方式,当数据被修改后,ContentResolver接口的notifyChange函数通知那些注册监控特定URI的ContentObserver对象。 如果ContentProvider和调用者在同一进程中,ContentProvider的方法(query/insert/update/delete等)和调用者在同一线程中;如果ContentProvider和调用者不在同一进程,ContentProvider方法会运行在它自身进程的一个Binder线程中。 4)Broadcast Receiver: 广播接收者,运用在应用程序间传输信息,可以使用广播接收器来让应用对一个外部事件做出响应。
Demo_Yang
2019/04/01
3.1K0
Android面试常问基础知识点(附详细解答)
精选Android中高级高频面试题:四大组件及Fragment原理
延伸:从整个生命周期来看,onCreate和onDestroy是配对的,分别标识着Activity的创建和销毁,并且只可能有一次调用; 从Activity是否可见来说,onStart和onStop是配对的,这两个方法可能被调用多次; 从Activity是否在前台来说,onResume和onPause是配对的,这两个方法可能被调用多次; 除了这种区别,在实际使用中没有其他明显区别;
Android技术干货分享
2020/04/21
2.1K0
精选Android中高级高频面试题:四大组件及Fragment原理
《Android移动应用基础教程》(Android Studio)(第二版)黑马程序员 课后习题答案
《Android移动应用基础教程》(Android Studio)(第二版)黑马程序员 课后习题答案
全栈程序员站长
2022/09/01
3.2K0
「Android」四大组件,你真的都掌握了?
ContextImpl 作为 Context 的抽象类,实现了所有的方法,我们常见的 getResources() , getAssets() , getApplication() 等等的具体实现都是在 ContextImpl 的
圆号本昊
2021/09/24
1.3K0
「Android」四大组件,你真的都掌握了?
Android四大组件全面解析,夯实基础。
为什么onDestroy没有执行? 用一句话概述 不要在onStop,onDestory中保存重要数据;最近任务栏清除app,app的onDestory不会掉用是因为该Binder调用是非阻塞的,导致App被杀死,所以onDestory没来得及调用 详细链接参考 https://blog.csdn.net/u013122625/article/details/77916482
Petterp
2022/02/09
9840
Android四大组件全面解析,夯实基础。
Android 开发基础常识
可以通过bindService的方式,先在Activity里实现一个ServiceConnection接口,并将该接口传递给bindService()方法,在ServiceConnection接口的onServiceConnected()方法 里执行相关操作。
zhangjiqun
2024/12/16
1530
Android 开发基础常识
android四大组件
Android开发的四大组件,本文主要分为一、Activity详解 二、Service详解 三、Broadcast Receiver详解 四、Content Provider详解 外加一个重要组件 intent的详解。 一、Activity详解 Activty的生命周期的也就是它所在进程的生命周期。
黄啊码
2020/05/29
1K0
Android-活动的生命周期
返回栈 Android中的活动是可以层叠的,每启动一个新的活动,就会覆盖在原活动之上, 然后点击Back键就会销毁最上面的活动,下面的活动就会重新显示出来。 Android是用任务(Task)管理活动的,一个任务就是一组存放在栈里的活动的集合, 这个栈也被称作返回栈(Back Stack)。栈是一种后进先出的数据结构。
博博1998
2022/04/25
5330
安卓学习记录
Activity:是所有Android应用程序的门面,凡是在应用中你看到的东西,都是在里面。每一个Activity都独立于其他Activity而存在。因此,其他应用可以启动其中任何一个Activity(当然得应用允许)
Helloted
2022/06/07
2.7K0
安卓学习记录
Android 入门--Activity
简单的来说,一个 Activity 包含了用户可以看到的界面,用来和用户进行交互。一个应用程序中可以有零个或者多个 Activity。零个 Activity 的话就是,这个程序不包含与用户交互的界面。
开发者
2019/12/26
6110
Android 入门--Activity
AndroidStdio1_5
在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了。比如说FirstActivity中有一个字符串,现在想把这个字符串传递到Second-Activity中,你就可以这样编写:
云深无际
2020/08/12
7000
AndroidStdio1_5
简述Activity生命周期「建议收藏」
Android是使用任务(Task)管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也 被称为返回栈。新活动启动进入栈,处于栈顶,当Back或finish()销毁一个活动时,栈顶的活动会出栈,前一个入栈的活动重新处于栈顶位置,显示给用户。
全栈程序员站长
2022/09/22
2770
Android面试问题整理
      作为一个即将毕业的Android程序媛,开始面临找工作了,本媛媛还是有点小紧张,于是收集了一些Android面试的题目.希望能够用上.如果大家有Android面试的经验,希望能给我一些建议呀.不多废话,直接上题。
仇诺伊
2018/09/12
1K0
Android面试问题整理
Android开发之路--(2)--Android四大组件
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/47214197
Hankkin
2018/09/06
8800
Android 面试之必问Android基础
Activity的启动模式有四种:Standard、SingleTop、SingleTask和SingleInstance。
Rouse
2021/05/28
8280
Android 面试之必问Android基础
【Android】期末选择题和判断题
1 关于sendBroadcast()方法说法正确的是( A ) A、该方法是发送一条无序广播 B、该方法是发送一条有序广播 C、该方法即是发送有序广播也可以发送无序广播 D、以上说法都不正确
天天Lotay
2022/12/02
1.6K0
相关推荐
​Activity的生命周期【建议收藏】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验