首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

已中招!Android 基础面试常常吊死在这几个问题上……

面试官:我给你讲讲吧,你去别的公司面试你,你可以这样回答: OnCreate():这是第一次创建视图时。通常,这是我们创建视图,从包中获取数据等的地方。...确实完成而不是更新新Activity的UI时,它更新了Activity的前一个实例(即创建它的实例,但不再显示!)。...创建视图需要花费时间,因此您的滚动很可能不会很流畅。这就是为什么 RecyclerView 会利用以下事实:滚动时,新行出现在屏幕上,而旧行消失在屏幕上。...代替为每个新行创建新视图,而是通过将新数据绑定到旧视图来对其进行回收和重用! 应聘者:我学到了! 18、面试官:再说一下RecyclerView与ListView有何不同?...RecyclerView 将列表与其容器分离,因此可以通过设置LayoutManager在运行时轻松地将列表项放在不同的容器(linearLayout,gridLayout)中。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android程序员问答题

    分享是一种幸福,这是一种质的飞越。 我的答题也可能存在出现错误的地方,欢迎指正,如果对于文章中的某些部分有不同的理解和想法,或者有更好的想法,欢迎留言讨论。...onCreate(Bundle)是你初始化活动的地方,而onPause()是你处理用户离开你的活动的地方。...服务对象并不意味着它在自己的进程中运行,除非另有说明,它运行在与它所属的应用程序相同的进程中。 服务不是一个线程。...singleTop是在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它。 singleTask是如果每次启动时系统首先会在返回栈中检查是否存在该活动的实例。...Intent为在不同应用程序中的代码之间执行延迟的运行时绑定提供了一种工具。其最重要的用途是开展活动,在活动中它可以被认为是活动之间的胶水。它基本上是一个被动的数据结构,对被执行的动作进行抽象描述。

    67020

    Android面试题总结【完整详细版本”一”】(含答案)

    当我们的Activity上弹出Dialog对话框时,程序的生命周期依然是onCreate() —> onStart() —> onResume(),在弹出Dialog的时候并没有onPause()和onStop...当我们在A中激活B时,A调用onPause()方法,此时B出现在屏幕时,B调用onCreate()、onStart()、onResume()。...当A启动B时,A调用onPause()方法,然后调用新的Activity B,此时调用onCreate()方法 —> onStart()方法 —> onResume()方法将新Activity激活。...应用A想用应用B任务栈当中的Activity G,尽管在不同的应用下,但是应用A仍然会直接复用Activity G。...码字符串,而session中能够保存任何类型的数据】; 安全性上的不同【cookie存放在客户端浏览器中,对我们客户端可见,客户端的一些程序就有可能去修改我们

    1.1K20

    Activity 的 36 大难点,你会几个?「建议收藏」

    ,Activity 并不会执行生命周期的方法 但是如果是跳转到一个不是全屏的 Activity 的话, 当然就是按照正常的生命周期来执行了 即 onPasue() -> onPause() ( 不会执行原...锁屏时会执行 onPause() 和 onStop() , 而开屏时则应该执行 onStart() onResume() Activity 退居后台: 当前 Activity 转到新的 Activity...这里建议的方法是又一次去 setIntent 。然后又一次去初始化数据和 UI 。代码例如以下所看到的: 这样,在一个页面中能够反复跳转并显示不同的内容。...一个进程满足下面任何一个条件都被认为是可视的: 寄宿着一个不是前台的活动,但是它对用户仍可见(它的 onPause() 方法已经被调用)。...例如我正在使用 qq 和别人聊天,这个时候 qq 是前台进程,但是当我点击 Home 键让 qq 界面消失的时候,这个时候它就转换成了后台进程。

    79420

    写给小白的android基础面试笔试题(一)

    Home键,会执行onPause—>onStop; 这个时候当你又回到Activity,会执行onRestart—>onStart—>onResume; 当你从A1界面跳转到A2界面时,生命周期的变化如下...答:这道题,说实话我知道的就是把图片进行压缩和把没用的文件剔除,但是我对与APK包的结构还不是特别了解,所以具体还需要优化什么我也答不上来了。...:使用Proguard ,这可以让你在编译的时候对代码进行混淆和优化,删掉不必要的jar包和无用的代码。...多渠道打包:就是指分不同的市场打包,如安卓市场、百度市场、谷歌市场等等,Android的这个市场有点多,就不一一列举了,多渠道打包是为了针对不同市场做出不同的一些统计,数据分析,收集用户信息。...Apk进行加密在将壳Apk进行合并得到新的Dex文件,最后替换壳程序中的dex文件即可,得到新的Apk,那么这个新的Apk我们也叫作脱壳程序Apk。

    92320

    安卓中activity的生命周期_产品生命周期五个阶段

    大家好,又见面了,我是你们的朋友全栈君。 Android系统根据生命周期的不同阶段唤起对应的回调函数来执行代码。系统存在启动与销毁一个activity的一套有序的回调函数。...Note: 即使系统会在activity stop时停止这个activity,它仍然会保存View对象的状态(比如EditText中的文字) 到一个Bundle中,并且在用户返回这个activity时恢复它们...那些被系统用来恢复之前状态而保存的数据被叫做 “instance state” ,它是一些存放在Bundle对象中的key-value pairs。...如果这个Activity被destroyed然后这个实例又需要被重新创建时,系统会传递在 (1) 中的状态数据到 onCreate() (2) 与 Activity.onRestoreInstanceState...如果它为null,系统则是创建一个新的Activity实例,而不是恢复之前被Destory的Activity。

    69310

    跟我学Android之十四 Activity的生命周期

    当这一新的Activity完成时,它从栈中被移除,而先前的Activity则又回到栈顶 l与独立运行的应用程序不同,Activity没有main函数 lActivity在生命周期的不同阶段将会执行不同的回调函数...l常用的回调函数如下: ØonCreate():初始化用户界面相关内容 ØonStart() ØonResume():初始化和接收Activity数据 ØonPause():停止、保存和释放Activity...) 在应用进入暂停状态时,onPause回调函数将执行,在onPause中应该执行适当的资源释放任务,比如,释放摄像头资源停止视频播放,但不要在onPause中执行耗时操作,比如保存当前状态任何长时间消耗...) 可以通过程序存储必要的信息 在重新启动Activity时会传回这些信息 •onRestoreInstanceState和onCreate都会得到这些信息 •onCreate在第一次创建时也会执行...所以数据的恢复任务应该在onCreate写更好 ListActivity是一个默认包含一个ListView的Activity 写一个类继承ListActivity就获得了包含ListView的Activity

    7910

    跟我学Android之十四 Activity的生命周期

    当这一新的Activity完成时,它从栈中被移除,而先前的Activity则又回到栈顶 l与独立运行的应用程序不同,Activity没有main函数 lActivity在生命周期的不同阶段将会执行不同的回调函数...l常用的回调函数如下: ØonCreate():初始化用户界面相关内容 ØonStart() ØonResume():初始化和接收Activity数据 ØonPause():停止、保存和释放Activity...从后台再次被切换到前台来的时候(执行onResume) 在应用进入暂停状态时,onPause回调函数将执行,在onPause中应该执行适当的资源释放任务,比如,释放摄像头资源停止视频播放...•onCreate在第一次创建时也会执行 •数据的恢复任务应该在onCreate写更好 有时候...所以数据的恢复任务应该在onCreate写更好 ListActivity是一个默认包含一个ListView的Activity 写一个类继承ListActivity就获得了包含ListView

    10610

    安卓第八夜 玛丽莲梦露

    使用ArrayAdapter CategoryActivity将以条目的方式来显示数据库中存储的所有Category,即联系人的类别。我在上一讲中,已经将数据存储到了SQLite数据库中。...ListView是一个View Group,用于管理多条布局相似的视图元素。例如: ? 可以看到,在ListView中,虽然每个条目的具体数据不同,但它们的构图方式都相同。...这样,我不用微观的操作每个条目,就可以把注意力放在数据的变更上。...当我们取出多个数据后,最自然的方式是记录为一个表或数组。我们需要根据小条目的布局,为数据赋予显示格式。最后,再把图像化的多个条目合成到ListView上。...在该过程中,我可以更自由的控制对数据和ListView的绑定。下面的CategoryAdapter继承了ArrayAdapter。它将允许我: 使用Category表中的数据。

    61710

    安卓第八夜 玛丽莲梦露

    使用ArrayAdapter CategoryActivity将以条目的方式来显示数据库中存储的所有Category,即联系人的类别。我在上一讲中,已经将数据存储到了SQLite数据库中。...ListView是一个View Group,用于管理多条布局相似的视图元素。例如: ? 可以看到,在ListView中,虽然每个条目的具体数据不同,但它们的构图方式都相同。...这样,我不用微观的操作每个条目,就可以把注意力放在数据的变更上。...当我们取出多个数据后,最自然的方式是记录为一个表或数组。我们需要根据小条目的布局,为数据赋予显示格式。最后,再把图像化的多个条目合成到ListView上。...在该过程中,我可以更自由的控制对数据和ListView的绑定。下面的CategoryAdapter继承了ArrayAdapter。它将允许我: 使用Category表中的数据。

    1.9K90

    Android基础部分再学习---activity的生命周期

    例如,如果你的活动有一个线程在后台运行下载网络数据,它可以在onCreate()中创建该线程【一般在onStart里面创建更好子线程,主要是onCreate()只有5秒的响应时间】,然后在onDestroy...它仍然保持着自身的所有实例和状态,所以根本不用担心它在返回到onResume方法时,实例会变为null,或者控件的事件监听不了(我以前就担心过这个问题)。...还可以在onCreate执行数据操作,比如从Cursor中检索数据等等,但是如果你每次进入这个Activity都可能需要更新数据,那么最好放在onStart里面。...尽管onPause在onStop之前执行,但是onPause只适合做一些轻量级的操作,更多的耗时耗资源的操作还是要放在onStop里面,比如说对数据保存,需要用到的数据库操作。...如果我们在进程中创建了很多的Activity,但是又不想关闭时去退出不在任务栈顶的Activity,那么就可以直接使用这个方法了。

    91320

    Fragment基本使用

    的remove()、replace()方法将碎片从从活动中移除,但如果在事务提交之前调用addToBackStack()方法,这时的碎片也会进入到停止状态。...,而commitAllowingStateLoss()方法则是不会抛出异常版本的commit()方法,但是尽量使用commit(),而不要使用commitAllowingStateLoss()。...onRestoreInstanceState()在onStart()之后,onResume()之前,因此避免出现该异常的方案有: 不要把Fragment事务放在异步线程的回调中 逼不得已时使用commitAllowingStateLoss...如果你将Fragment任务添加到回退栈,当用户点击后退按钮时,将看到上一次的保存的Fragment。...4.1 传递数据给Fragment 步骤流程: 在Activity中创建Bundle数据包,调用Fragment实例的setArguments(),将Bundle数据包传给Fragment Fragment

    2K30

    Android Activity生命周期整理

    当用户短暂离开APP时,如有必要,要能够把当前用户的数据记录下来。 当屏幕切换竖屏横屏时,不要导致APP崩溃以及用户数据的丢失。...在上图展示的六个状态,其中三个是属于静态的,而另外三个是瞬态的(将直接跳转到下一状态。)。静态的便是:Resumed、Paused、Stopped,这三个状态能长时间存在。...onCreate方法是瞬态的,一旦执行完所有的初始化代码,便立即执行onStart方法,onResume方法,到达Resumed状态。用户操作均在此状态下完成。 ?...Note: 当activity进入paused状态后,它之前所初始化的组件信息是存储在内存中的,并不会消失,因此也无需在onResume()方法中重新进行初始化。...正如前面代码所示,如果你在onPause方法中,释放了一些系统资源,那么一旦用户回到activity就需要相应的初始化释放掉的资源。其次,初始化之前只在onResume方法中初始化的资源。

    85030

    Android Activity详解(一)

    Activity生命周期图 在此之前,我们新建一个项目,代码非常简单,两个活动之间相互跳转(本来想做GIF图的,不会~~~~(>_<)~~~~) 主活动代码如下: public class MainActivity...--->: onResume(页面运行中) 2,跳转到SecondActivity页面 I/MainActivity--->: onPause(MainActivity由onResume切换到暂停状态)...图画的不好看,见谅 当然,活动生命周期的改变并不仅仅由跳转页面所决定,比如手机的配置比较低,高优先级的系统级应用需要内存就会把应用杀死,那毫无疑问 活动将由onResume——>onPause——>onStop...——>onDestroy 最后一个特殊情况再测试点击手机HOME键: 绝大多数的教程内均写的是点击HOME键任务进入后台,活动onStop()被保存,但是我在真机测试时并不是这样 I/MainActivity...--->: onPause I/MainActivity--->: onStop I/MainActivity--->: onDestroy 我的设备是魅族MX4,安卓5.1的系统,个人猜想可能是安卓版本不同所导致的

    92010

    Android基础总结(2)——活动Activity

    Android是使用任务栈(Task)来管理活动的,一个任务就是一组存放在栈中的活动的集合,这个栈也被称作返回栈。...每当我们开启一个新的活动,它会在返回栈中入栈,并处于栈顶的位置;而每当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新回到栈顶的位置。...Intent还可以和Bundle一起用于传递数据,首先可以把需要传递的数据保存在Bundle对象中,然后将Bundle对象存入Intent中,到了目标活动之后先从Intent中取出Bundle,再从Bundle...2.Activity没被杀死,onCreate不会被调用,但onRestoreInstanceState 仍然会被调用,在 onResume之前恢复上次保存的信息。     ...Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate()、onPause()等生命周期方法

    1.2K90

    2020年Android初级面试题一年汇总出炉,吃透它!

    onTouchEvent()是否处理本次事件,滑动冲突分为同方向滑动冲突,例如ScrollView和ListView,同方向滑动冲突,可以计算ListView高度而动态设置ListView的高度,ScrollView...例如ViewPager和ListView,不同方向滑动冲突,一个是横向滑动一个是竖直滑动,不同方向滑动可以判断滑动的x,y轴是横向还是竖直滑动,如果判断得到是横向滑动,就拦截ListView的事件,竖则反之...内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。...可见且在前台并开始活动,这是与 onStart 的区别所在; onPause(): 表示 Activity 正在停止,此时可做一些 存储数据、停止动画等工作,但是不能太耗时,因为这会影响到新 Activity...所以如果使用 add 一般会伴随 hide()和show(),避免布局重叠; 使用 add,如果应用放在后台,或以其他方式被系统销毁,再打开时,hide()中引用的 fragment 会销毁,所以依然会出现布局重叠

    1.3K30

    Android面试大纲(集合)

    是一种页面内跳转协议,通过定义自己的scheme协议,可以跳转到app中的各个页面 服务器可以定制化告诉app跳转哪个页面 App可以通过跳转到另一个App页面 可以通过H5页面跳转页面 1 Fragment...Intent来传送我们的数据 2、Broadcast Receiver的使用场景 同一App具有多个进程的不同组件之间的消息通信 不同App之间的组件之间的消息通信 3、Broadcast Receiver...面试题 1、ListView是什么 ListView是能将一个数据集合以动态滚动的方式展示到用户界面上的View 2、ListView的RecycleBin机制 ?...是存放在堆中的,我们只要回收堆内存即可 在安卓3.0以后Bitmap是存放在内存中的,我们需要回收native层和Java层的内存 官方建议我们3.0以后使用recycle方法进行回收,该方法也可以不主动调用...上 2、热更新主流框架 Dexposed AndFix Nuwa Tinker 3、热更新的原理 在ClassLoader创建一个dexElements数组 将修复好的dex文件存放在dexElements

    1.1K20

    保存数据返回后可以继续编辑

    但是当系统内存不足时, 调用onPause()和onStop()方法后的activity可能会被系统摧毁, 此时内存中就不会存有该activity的实例对象了....对象中, 这样即使activity被系统摧毁, 当用户重新启动这个activity而调用它的onCreate()方法时, 上述的Bundle对象会作为实参传递给onCreate()方法, 开发者可以从...Bundle对象中取出保存的数据, 然后利用这些数据将activity恢复到被摧毁之前的状态....比如用户按下BACK键退出activity时, 用户显然想要关闭这个activity, 此时是没有必要保存数据以供下次恢复的, 也就是onSaveInstanceState()方法不会被调用....保存持久化数据的操作应该放在onPause()中. onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等.

    818100

    AndroidStdio1_5

    在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了...既然可以传递数据给下一个活动,那么能不能够返回数据给上一个活动呢?答案是肯定的。 不过不同的是,返回上一个活动只需要按一下Back键就可以了,并没有一个用于启动活动的Intent来传递数据。...栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。...而每当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总是会显示处于栈顶的活动给用户。...系统仍然会为这种活动保存相应的状态和成员变量,但是这并不是完全可靠的,当其他地方需要内存时,处于停止状态的活动有可能会被系统回收。 4.销毁状态 当一个活动从返回栈中移除后就变成了销毁状态。

    62830
    领券