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

Android 面试之必问Android基础

onAttach()中,将参数Context强转为OnFragmentInteractionListener对象传递过去。...如果你看过它的底层源码,那么就应该知道ContentProvider是通过Binder进行数据共享。因此,如果我们需要对第三方应用提供数据,可以考虑使用ContentProvider实现。...Android 规定访问 UI 只能在主线程中进行,因为 Android 的 UI 控件不是线程安全的,多线程并发访问会导致 UI 控件处于不可预期的状态。为什么系统不对 UI 控件的访问加上锁机制?...next 方法是一个无限循环的方法,如果消息队列中没有消息,那么 next 方法会一直阻塞。当有新消息到来时,next 方法会放回这条消息并将其从单链表中移除,源码如下。...对象分配和垃圾回收 虽然Android 5.0上使用ART来减少GC停顿时间,但仍然会造成卡顿。尽量避免在循环内创建对象导致GC。

78021

Android 面试之必问Android基础

()中,将参数Context强转为OnFragmentInteractionListener对象传递过去。...如果你看过它的底层源码,那么就应该知道ContentProvider是通过Binder进行数据共享。因此,如果我们需要对第三方应用提供数据,可以考虑使用ContentProvider实现。...Android 规定访问 UI 只能在主线程中进行,因为 Android 的 UI 控件不是线程安全的,多线程并发访问会导致 UI 控件处于不可预期的状态。为什么系统不对 UI 控件的访问加上锁机制?...next 方法是一个无限循环的方法,如果消息队列中没有消息,那么 next 方法会一直阻塞。当有新消息到来时,next 方法会放回这条消息并将其从单链表中移除,源码如下。...对象分配和垃圾回收 虽然Android 5.0上使用ART来减少GC停顿时间,但仍然会造成卡顿。尽量避免在循环内创建对象导致GC。

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

    Android 面试之必问Android基础

    ()中,将参数Context强转为OnFragmentInteractionListener对象传递过去。...如果你看过它的底层源码,那么就应该知道ContentProvider是通过Binder进行数据共享。因此,如果我们需要对第三方应用提供数据,可以考虑使用ContentProvider实现。...Android 规定访问 UI 只能在主线程中进行,因为 Android 的 UI 控件不是线程安全的,多线程并发访问会导致 UI 控件处于不可预期的状态。为什么系统不对 UI 控件的访问加上锁机制?...next 方法是一个无限循环的方法,如果消息队列中没有消息,那么 next 方法会一直阻塞。当有新消息到来时,next 方法会放回这条消息并将其从单链表中移除,源码如下。...对象分配和垃圾回收 虽然Android 5.0上使用ART来减少GC停顿时间,但仍然会造成卡顿。尽量避免在循环内创建对象导致GC。

    62240

    Android 一起来看看 7.0 的新特性 FileProvider

    本篇文章已授权为微信公众号 code小生 发布 一、前言 ---- 对于 Android 7.0,提供了非常多的变化,不过和我们开发者关联最大的,或者说必须要适配的就是去除项目中传递 file:// 类似格式的.../> 3、使用 FileProvider 生成内容 URI 配置工作已经全部完成了,后面就需要将之前传递的 file:// 替换成 FileProvoider 需要用到的...,这正是我们前面在 AndroidManifest.xml 文件中配置的 android:authorities 参数 调用这个方法会自动得到一个 file:// 转换成 content:// 的一个...Uri 对象,可以供我们直接使用 4、给 Uri 授予临时权限 当我们生成一个 content:// 的 Uri 对象之后,其实还无法对其直接使用,还需要对这个 Uri 接收的 App 赋予对应的权限才可以...当我们生成一个 content:// 的 Uri 对象之后,还需要对这个 Uri 接收的 App 赋予对应的权限,到此本文的内容就基本结束了。

    1.7K40

    Android 基础:Fragment,看这篇就够了 (上)

    本文从为什么出现Fragment开始,介绍了Fragment相关的方方面面,包括Fragment的基本定义及使用、回退栈的内部实现、Fragment通信、DialogFragment、ViewPager...对象,该对象记录了这个事务的全部操作轨迹(这里只做了一次add操作,并且加入回退栈),随后将该对象提交到FragmentManager的执行队列中,等待执行。...Fragment通信 Fragment向Activity传递数据 首先,在Fragment中定义接口,并让Activity实现该接口(具体实现省略): public interface OnFragmentInteractionListener...OnFragmentInteractionListener对象: public void onAttach(Context context) { super.onAttach(context);...Activity向Fragment传递数据 Activity向Fragment传递数据比较简单,获取Fragment对象,并调用Fragment的方法即可,比如要将一个字符串传递给Fragment,则在

    6.2K40

    配置Android项目 - 一些重要的事情

    gitignore 当你在Android Studio中创建一个新的Android项目时,它已经生成了gitignore文件,但通常它不包含所有必要的规则。...为了快速生成和下载gitignore文件,我建议您使用gitignore.io网站。只需输入必要的关键字,如 — Android,Intellij并点击生成按钮。 ?...tools folder 如果你有一些第三方脚本,规则集或其他与您的项目相关的文件不要只是简单的把它们放在根目录 —它会造成混乱。...当从IDE运行或调试项目时,Android Studio会使用Android SDK工具生成的调试证书自动为您的APK签名。...strict mode Android StrictMode可帮助您检测不同类型的问题: 可关闭对象没关闭 在主线程中读写文件或者访问网络 uri 暴露 … 每当检测到这样的问题,它可以显示适当的日志或应用程序崩溃

    66820

    【详解】Android Jetpack 新组件之Navigation的用法和源码结构分析

    KTX(Kotiln扩展程序) 本文主要介绍的是Navigation,接下来还会有Paging的深度解析好文,敬请关注~ >>>> 介绍 >>>> 为什么使用Navigation?...Deeplink的支持,绕过activity直接跳到fragment 传递参数更安全 >>>> Navigation——导航组件 a、基于Android Studio 3.2 Canary 14(https...>>>> 传递数据 您可以通过两种方式在目标之间传递数据:使用Bundle对象或使用safeargs Gradle插件以类型安全的方式传递数据。...导航架构组件有一个名为safeargs的Gradle插件,它生成简单的对象和构建器类,以便对目标和动作指定的参数进行类型安全访问。...>>>> Deeplink-深度链接跳转 在Android中,深层链接是指向应用中特定目标的URI。类似Activity的scheme协议。

    2.3K40

    Android学习笔记,不断更新

    Android笔记 IDE:Android Studio 文章目录 Android笔记 新建工程 详解项目中的文件资源 详解res目录文件资源 引用res目录下的资源 在活动中使用toast 销毁当前活动...libs 如果你的项目中使用到了第三方jar 包,就需要把这些jar 包都放在libs 目录下,放在这个目录下的jar 包都会被自动添加到构建路径里去。...app.iml IntelliJ IDEA 项目自动生成的文件,我们不需要关心或修改这个文件中的内容。...然后通过Uri.parse ()方法,将一个网址字符串解析成一个Uri 对象,再调用Intent 的setData()方法将这个Uri 对象传递进去。 ​...setData()接收一个Uri 对象,主要用于指定当前Intent 正在操作的数据,而这些数据通常都是以字符串的形式传入到Uri.parse ()方法中解析产生的。 ​

    1K40

    Android AIDL 跨进程通信

    安卓 IPC 跨进程通信有很多种方式,我们可以用 Bundle传递数据,通过 Intent 意图去打电话,在 Uri 里面传递电话号码 //手动拨号将Intent.ACTION_CALL改为Intent.ACTION_DIAL...Intent intent = new Intent(Intent.ACTION_CALL); Uri data = Uri.parse("tel:" + phoneNum...Android Studio 下自动生成 AIDL 文件的方式 ?...然后我们再手动的 build project,切换到 project 模式可以看到 Android Studio 会自动生成一个实际的跨进程通信 AIDL 实现类 ?...in 表示客户端传递数据给服务端,然后就不管了,没有声明默认也是这种 out 表示即使客户端传递了一个非空的对象给服务端,服务端依然会自己实例化一个空对象(里面的参数没有值而已) inout 这个修饰符有争议

    47530

    《Android基础:Fragment,看这篇就够了》

    本文从为什么出现Fragment开始,介绍了Fragment相关的方方面面,包括Fragment的基本定义及使用、回退栈的内部实现、Fragment通信、DialogFragment、ViewPager...对象,该对象记录了这个事务的全部操作轨迹(这里只做了一次add操作,并且加入回退栈),随后将该对象提交到FragmentManager的执行队列中,等待执行。...Fragment通信 Fragment向Activity传递数据 首先,在Fragment中定义接口,并让Activity实现该接口(具体实现省略): public interface OnFragmentInteractionListener...{ void onItemClick(String str); //将str从Fragment传递给Activity} 在Fragment的onAttach()中,将参数Context强转为OnFragmentInteractionListener...向Fragment传递数据 Activity向Fragment传递数据比较简单,获取Fragment对象,并调用Fragment的方法即可,比如要将一个字符串传递给Fragment,则在Fragment

    4K62

    ContentProvider简介

    通过getContentResolver()方法得到Content Resolver对象。 调用ContentResolver类的query()方法查询数据,该方法会返回一个Cursor对象。...例如,电邮应用可以将FLAG_GRANT_READ_URI_PERMISSION放入intent对象中传递给Context.startActivity。...ContentProviderHolder对象是一个Binder对象,是用来把Content Provider的信息传递给ActivityManagerService服务的。...(六) 数据共享 Content Provider在进行数据传递时,包括跨进程通信时,使用了SQLiteCursor对象,即SQLite数据库游标对象,此对象包含了一个成员变量mWindow,它的类型为...对于Content Provider实现方,当数据变化的时候,想通知使用方的话,就需要调用调用getContentResolver().notifyChange来通知注册在此URI上的监听器,告诉监听器当前

    2.7K60

    手机打开照相机_安卓11调用第三方相机

    先来说下intent的作用,intent是Android程序中各组件之间进行交互的一种重要方式,一般被用来启动活动、启动服务以及发送广播等; intent在启动Activity的时候可以传递数据...,比如说给另一个Activity传递数据,那么活动与活动之间是怎样进行数据传递的呢?...putExtra("A", B)方法中,AB为键值对,第一个参数为键名,第二个参数为键对应的值,这个值才是真正要传递的数据。...id处理 String docid=DocumentsContract.getDocumentId(uri); /*1、“==”比较两个变量本身的值,即两个对象在内存中的首地址。...(java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数, 而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性

    1.3K20

    Android-应用被作为第三方浏览器打开

    前言 微信里的文章页面,可以选择“在浏览器打开”。现在很多应用都内嵌了WebView,那是否可以使自己的应用作为第三方浏览器打开此文章呢? 如图: ?...微信打开三方浏览器.png 就像图中这样,让自己的应用出现在列表里。 这篇文章就是为了实现这个功能。...* 如果这个实例已经存在,intent就会通过onNewIntent传递到这个Activity。 * 否则新的Activity实例被创建。...1、设置启动模式:launchMode="singleTask" 2、getDataFromBrowser()方法会在onCreate和onNewIntent方法中调用。...- Android中Activity launchMode> 这就是为什么要在onNewIntent中调用的原因,当此Activity已存在时,值会通过onNewIntent传递过来。

    1.8K20

    安卓入门-第二章-探究活动

    接着就会下图所示的布局编辑器: ?  这是Android Studio为我们提供的可视化布局编辑器,你可以在屏幕的中央区域预览当前的布局。...点击Finish完成创建,Android Studio会为我们自动生成SecondActivity.java和second_layout.xml这两个文件。...不过幸运的是,Android Studio已经帮我们自动完成了,你可以打开AndroidManifest.xml瞧一瞧: Uri.parse()方法,将一个网址字符串解析成一个Uri 对象,再调用Intent的setData()方法将这个Uri 对象传递进去。  ...这个方法其实并不复杂,它接收一个Uri 对象,主要用于指定当前Intent正在操作的数据,而这些数据通常都是以字符串的形式传入到Uri.parse()方法中解析产生的。

    3K20

    金九银十,2019 Android精选面试实战总结整理(含详细解析)

    ,效果比前面差一点点 加固的底层原理:第三方加固的应用会生成一个Apk,然后把你的APK读取出来,在封装到这个第三方应用的APK里面....imageview使用scaletype缩放; 使用权重,等比例,百分比布局等等 对象序列化: 为什么要序列化?...1)永久性保存对象,保存对象的字节序列到本地文件中; 2)通过序列化对象在网络中传递对象; 3)通过序列化在进程间传递对象。...两种实现方式依旧是贴url,方便大家快速查询 两种序列化相关 既然Google推荐Parcelable这种序列化,在这里,推荐一键生成序列化的插件, 在Android Studio里面搜索插件,如下图,...Uri 通用资源标志符(Universal Resource Identifier)Uri代表要操作的数据,Android中可用的每种资源 - 图像、视频片段等都可以用Uri来表示。

    61720

    2019年面试实战总结,这些Android面试题你一定需要了解

    :第三方加固的应用会生成一个Apk,然后把你的APK读取出来,在封装到这个第三方应用的APK里面....使用scaletype缩放; 5:使用权重,等比例,百分比布局等等 对象序列化: 为什么要序列化?...1)永久性保存对象,保存对象的字节序列到本地文件中; 2)通过序列化对象在网络中传递对象; 3)通过序列化在进程间传递对象。...两种实现方式依旧是贴url,方便大家快速查询 两种序列化相关 既然Google推荐Parcelable这种序列化,在这里,推荐一键生成序列化的插件, 在Android Studio里面搜索插件,如下图,...Uri 通用资源标志符(Universal Resource Identifier)Uri代表要操作的数据,Android中可用的每种资源 - 图像、视频片段等都可以用Uri来表示。

    80731
    领券