首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    常见Android面试题及答案(详细整理)

    两个Activity之间怎么传递数据? 答: 可以在Intent对象中利用Extra来传递存储数据。...NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者帮助时巨大的。...NDK可以自动将so和Java应用一起打包,极大的减轻了开发人员的打包工作。 2、NDK提供了一份稳定、功能有限的API头文件声明。...答: 导致内存泄露主要的原因是,先前申请了内存空间而忘记了释放。如果程序中存在无用对象的引用,那么这些对象就会驻留内存,消耗内存,因为无法让垃圾回收器GC验证这些对象是否不再需要。...如果存在对象的引用,这个对象就被定义为“有效的活动”,同时不会被释放。要确定对象所占内存将被回收,我们就要确认该对象不会再被使用。典型的做法是把对象数据成员设为null或者从集合中移除该对象。

    3K11

    很全面的Android面试题

    基本数据类型可以通过Intent 传递数据 //把数据封装至intent对象中 //把数据封装至bundle对象中 Bundle bundle = new Bundle();...(intent); 传递对象 如果要传递对象,需要把对象类序列化,然后intent.putExtra("mp3Info", mp3Info) 在另一个activity,或服务、广播中取出: Mp3Info...对于一个 Intent 对象,消息“目的地”是必须的,而内容则是可选项。 通过Intent 可以实现各种系统组件的调用与激活....2 通过bindService Service会运行onCreate,然后是调用onBind, 这个时候调用者和Service绑定在一起。...就可以调用活动里的方法了 activity给fragment传递数据一般不通过fragment的构造方法来传递,会通过setArguments来传递,因为当横竖屏会调用fragment的空参构造函数,数据丢失

    55110

    很全面的Android面试题

    基本数据类型可以通过Intent 传递数据       //把数据封装至intent对象中     //把数据封装至bundle对象中     Bundle bundle = new Bundle();...startActivity(intent);  传递对象 如果要传递对象,需要把对象类序列化,然后intent.putExtra("mp3Info", mp3Info) 在另一个activity,或服务...对于一个 Intent 对象,消息“目的地”是必须的,而内容则是可选项。 通过Intent 可以实现各种系统组件的调用与激活....2 通过bindService        Service会运行onCreate,然后是调用onBind, 这个时候调用者和Service绑定在一起。...就可以调用活动里的方法了 activity给fragment传递数据一般不通过fragment的构造方法来传递,会通过setArguments来传递,因为当横竖屏会调用fragment的空参构造函数,数据丢失

    5.9K70

    Android AIDL 传递对象(Parceable)

    教程 (一)—— 简单的示例 Android AIDL 传递对象(Parceable) 在上一篇文章中 Android AIDL 教程 (一)—— 简单的示例,我们介绍了怎样使用 AIDL 进行进程间的通讯...,并简单写了一个 Demo,今天,让我们一起来学习怎样在 AIDL 中传递对象。...之后如果想与服务端通讯,通过保存下来的 Binder,即可调用服务端的方法。 第一步:将服务端的 aidl 文件 copy 过来,注意要放在同一个包下。...这里的 Action 是与服务端一一对应的。...当我们调用 mIPlayService.play 方法的时候,服务端会去查找本地是否存在 丑八怪 这首歌,查找到的时候会回调 onSuccess 方法,查找不到的时候会回调 onError 方法

    80520

    笔记——Android零碎知识摘录(一)

    默认值:如果包含有intent-filter 默认值为true; 没有intent-filter默认值为false。虽然说加了这个属性,能使其他的程序不能调用。...Integer是int的封装类,里面有很多进行处理的静态方法 Integer是对象而int不是,内存的分配位置也不一样 Integer的属性和其他类一样的,在方法里都是引用传递;而基本类型int是值传递...>2.如果java中是new的方式创建一个变量对象,就会在栈内存中存放对象的引用地址,对象值则存放于堆中,即使对象的作用域结束也不会立刻释放,直到系统GC回收 ?...但是有个例外,如果调用handler.sendMessageAtFrontOfQueue()方法会直接将uptimeMillis入队列的延迟时间设置为0,所以会直接将Msg插入到消息插列头部。...一样用在定义引用变量中,但是传值范围不一样 T和?运用的地方有点不同,?是定义在引用变量上,T是类上或方法上;如果有泛型方法和非泛型方法,都满足条件,会执行非泛型方法。

    40420

    备战金九银十:BAT大厂最爱问的Android核心面试百题详细解析!

    减少Item View的布局层级 这是所有Layout都必须遵循的,布局层级过深会直接导致View的测量与绘制浪费大量的时间。 4. adapter中的getView方法尽量少使用逻辑 5....广播接收者完成操作后,所在进程会变成空进程,很容易被系统回收 34.ContentProvider与sqlite有什么不一样的?...61.如何将SQLite数据库(dictionary.db文件)与apk文件一起发布 把这个文件放在/res/raw目录下即可。...,将请求Intent添加到队列中; 63.谈谈对Android NDK的理解 NDK是一系列工具的集合.NDK提供了一系列的工具,帮助开发者快速开发C或C++的动态库,并能自动将so和java应用一起打包成...,没有线程来执行其他的任务,导致的情形是会发生AsyncTask 根本执行不了的问题 89.Activity间通过Intent传递数据大小有没有限制?

    1.2K31

    Android原生下载(上篇)基本逻辑+断点续传

    ,使用Intent进行数据传递 5.对着代码,整理了一下思路,画了一幅下面的流程图,感觉思路清晰多了 6.本例比较基础,但串联了Android的很多知识点,作为总结还是很不错的。...添加的Action,还是Intent传递数据的标示,或Handler发送消息的标示 一个项目中肯定会有很多这样的常量,如果散落各处感觉会很乱,我习惯使用一个Cons类统一处理 //intent传递数据...} } 不要忘记注册Service: 通过点击两个按钮,测试可以看出FileBean对象的传递和下载开始...mProgressBar) { progressBar.setProgress(progress); } } } } 五、将两大部分拼合一起...: @Override//每次启动服务会走此方法 public int onStartCommand(Intent intent, int flags, int startId) { mDao

    94610

    Android四大组件全面解析,夯实基础。

    当异常终止的Activity被重建以后,系统会调用onRestoreInstanceState,并且把Activity销毁时onSaveInstanceState方法所保存的Bundle对象参数同时传递给...其中onCreate和onRestoreInstanceState方法来恢复Activity的状态的区别: onRestoreInstanceState回调则表明其中Bundle对象非空,不用加非空判断...与上面三种不同的是,指定为 singleInstance 的模式,在启动的时候会启用一个新的返回栈来管理此活动,而且只会创建一次(当然,如果你kill掉之后再启动就另当别论啦),如此一来,全局独立并唯一...对于有序广播,前面的接收者可以将处理结果通过setResultExtras(Bundle)方法存放进结果对象,然后传给下一个接收者,通过代码:Bundle bundle =getResultExtras...,根据 Android 的内存管理策略,在系统内存紧张的时候,会按照优先级,结束优先级低的线程,而空线程无异是优先级最低的,这样就可能导致 BroadcastReceiver启动的子线程不能执行完成。

    90230

    史上最全的Android面试题集锦

    ViewGroup事件分发 当一个点击事件产生后,它的传递过程将遵循如下顺序: Activity -> Window -> View 事件总是会传递给Activity,之后Activity再传递给Window...,主要区别在于虚引用必须和引用队列一起使用。...垃圾检测方法: 引用计数法:给每个对象添加引用计数器,每个地方引用它,计数器就+1,失效时-1。如果两个对象互相引用时,就导致无法回收。...JVM在垃圾回收的时候,会检查堆中所有对象是否被这些根集对象引用,不能够被引用的对象就会被垃圾回收器回收。)...真这样做的话会导致编译错误。如 果你再深一步考虑,你会发现Java这样做是有意义的,因为List可以存储任何类型的对象包括String, Integer等等,而List却只能用来存储Strings。

    1.3K42

    内存泄露的一些坑

    ,或者是异步的网络请求也是单独开线程来执行的,那么就会存在一个问题,如果内部线程的生命周期比Activity的生命周期要长,那么内部线程任然默认持有Activity的引用,导致Activity对象无法被回收...,也避免回调监听继续持有activity引用;对与内部类还有一种解决方式,和内部Handler相似,定义成static内部类,然后把Activity对象的弱引用传递进去,这样也就万无一失,举个项目中遇到的实际场景...,如果把StartRecorderListener的实现改成RecorderTimeListener的实现,那么Activity内存泄漏就不存在了 动画导致内存泄漏 进入Activity界面后如果有一些和控件绑定在一起的属性动画在运行...修饰和,这个对象一旦被创建那么就一直存在了,属性动画一旦start之后,那么就一直运行,这时候就算退出activity的时候cancel掉动画也仍然会持有activity引用,就像下面这个例子: private...Activity对象引用导致内存泄漏,解决版本是传入ApplicationContext对象,或者在Activity退出的时候销毁这个单例对象,单例在什么时候时候使用,如果一个对象并不会被频繁的调用,那就没必要用单例

    1.7K31

    【Java 基础篇】Java Function 接口详解

    andThen 方法 andThen 方法将两个 Function 实例串联在一起,先应用当前函数,然后将结果传递给另一个函数。...andThen 方法:将当前函数执行后的结果作为参数传递给另一个函数,并返回一个新的函数,实现函数的串联。...空值处理:在应用 Function 之前,应该确保输入参数不为空(null)。Function 不会自动处理空值,如果传递了空值,可能会导致 NullPointerException。...复合过多的函数可能会导致代码难以理解和维护。建议在复合函数时保持代码的可读性。 方法引用的可读性:使用方法引用时,确保方法引用的目标方法与函数式接口的签名兼容。...不兼容的方法引用会导致编译错误。 性能考虑:对于频繁调用的函数,性能可能是一个关键问题。一些函数复合或方法引用可能会引入额外的开销,需要在性能敏感的情况下进行评估。

    2.6K42

    史上最全的Android面试题集锦

    ViewGroup事件分发 当一个点击事件产生后,它的传递过程将遵循如下顺序: Activity -> Window -> View 事件总是会传递给Activity,之后Activity再传递给Window...,主要区别在于虚引用必须和引用队列一起使用。...垃圾检测方法: 引用计数法:给每个对象添加引用计数器,每个地方引用它,计数器就+1,失效时-1。如果两个对象互相引用时,就导致无法回收。...JVM在垃圾回收的时候,会检查堆中所有对象是否被这些根集对象引用,不能够被引用的对象就会被垃圾回收器回收。)...真这样做的话会导致编译错误。如 果你再深一步考虑,你会发现Java这样做是有意义的,因为List可以存储任何类型的对象包括String, Integer等等,而List却只能用来存储Strings。

    77940

    四年Android面试遇到的问题整理

    ,而lable只有Activity的引用,而Activity会持有其他更多对象的引用。...4.尽量不要在Activity中使用非静态内部类,因为非静态内部类会隐式持有外部类实例的引用,当非静态内部类的引用的声明周期长于Activity的声明周期时,会导致Activity无法被GC正常回收掉。...这条是很多人会犯的错误: Java中的Thread有一个特点就是她们都是直接被GC Root所引用,也就是说Dalvik虚拟机对所有被激活状态的线程都是持有强引用,导致GC永远都无法回收掉这些线程对象,...适配器模式:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper) 装饰模式:动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活...其使用场景: 1.一个抽象模型有两个方面,其中一个方面依赖于另一个方面 2.一个对象的改变将导致一个或多个其他对象也 发生改变 3.需要在 系统中创建一个 触发链 具体应用: 比如回调模式中,实现了抽象类

    57310

    Android中Application的应用

    () 让Intent携带,或者有一个Bundle把信息加入Bundle让Intent推荐Bundle对象,实现传递。...这其实是Android的一种IPC数据传递的方法。如果我们的两个Activity在同一个 进程当中为什么还要这么麻烦呢,只要把需要传递的对象的引用传递过去就可以了。 基本思路是这样的。...在Activity A中把需要传递的对象放入这个HashMap,然后通过Intent或者其它途经再把这人索引的字符串传递给Activity B ,Activity B 就可以根据这个字符串在HashMap...PitFalls 使用Application如果保存了一些不该保存的对象很容易导致内存泄漏。如果在Application的oncreate中执行比较 耗时的操作,将直接影响的程序的启动时间。...因为内部类的对象会持有当前类的引用,所以也就持有了Context的引用。

    77460

    【Android】Realm详解

    在其它类型属性上使用 @Required修饰会导致编译失败。 Tip:基本数据类型不需要使用注解 @Required,因为他们本身就不可为空。...注意:在UI和后台线程同时开启创建write的事务,可能会导致ANR错误。为了避免该问题,可以使用executeTransactionAsync来实现。...(null)的 JSON 创建对象: 对于非必须(可为空值的属性),设置其值为 null; 对于必须(不可为空值的属性),抛出异常; 使用包含空值(null)的 JSON 更新对象: 对于非必须(可为空值的属性...举个常用例子,假如你的对象拥有一个主键,请通过intent 的 bundle 来传递这个主键的值。...该示例展示了在安卓开发中常用的如何传递 id 并且得到对应的 RealmObject。 RxJava 对于这么火的RxJava,Realm又怎么会放过他。

    4.5K110

    Service基础

    直到调用stopSelf(int)才停止传递intent。如果在被kill后还有未处理好的intent,那被kill后服务还是会自动启动。...,并执行onStartCommand回调方法,但是不同的是,Android系统会再次将Service在被杀掉之前最后一次传入onStartCommand方法中的Intent再次保留下来并再次传入到重新创建后的...conn , int flags); 参数说明: 第一个参数表示与服务相关联的Intent对象 第二个参数的类型是ServiceConnection,负责连接Intent对象指定的服务,通过ServiceConnection...bindService和startService混合使用时 引用自这里 1.如果先bindService,再startService: 在bind的Activity退出的时候,Service会执行...R.raw.sound引用该音乐文件,放入/res/raw文件夹中的资源文件会保持原来的面貌不会被编译成二进制。

    1.9K70
    领券