首页
学习
活动
专区
圈层
工具
发布

Android高频面试专题 - 基础篇(一)Activity

可以从图中看出当Activity发生意外的情况的时候,这里的意外指的就是系统配置发生改变(在未配置android:configChanges的前提下),如横竖屏切换(切横屏时会执行一次,切竖屏时会执行两次...如果我们不想自己的Activity在系统配置发生改变时被销毁后再重建,只需在清单文件中对应Activity下的android:configChanges中添加对应场景配置项,如orientation|screenSize...比如说:从mainactivity跳转到activity-A(或者继续从activity-A再跳转到activity-B),这时候,从后台强杀,只会执行mainactivity的onDestroy方法,...Activity常用的标记位Flags FLAG_ACTIVITY_NEW_TASK 此标记位作用是为Activity指定“singleTask”启动模式,其效果和在XML中指定相同android:launchMode...如何在Application中获取当前Activity实例 在Application类,通过实现Application.ActivityLifecycleCallbacks接口调用registerActivityLifecycleCallbacks

2.5K31

Android Intent用法总结

设置这个类的方式可以是Class对象(如SecondActivity.class),也可以是包名加类名的字符串(如"com.example.app.SecondActivity")。...Intent属性 Intent对象大致包括7大属性:Action(动作)、Data(数据)、Category(类别)、Type(数据类型)、Component(组件)、Extra(扩展信息)、Flag(标志位)...Intent.EXTRA_TEXT, "Hello"); intent.setType("message/rfc822"); startActivity(intent); 显示地图与路径规划 // 打开Google地图中国北京位置..., uri); startActivity(intent); // 路径规划:从北京某地(北纬39.9,东经116.3)到上海某地(北纬31.2,东经121.4) Uri uri = Uri.parse..."); intent.setClassName("com.android.camera", "com.android.camera.CropImage"); intent.setData(Uri.fromFile

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

    导航: 嵌套导航图和 | MAD Skills

    这就需要我们将应用模块化,并且了解导航如何在模块间实现操作。 那么,接下来,让我们打开 Android Studio 开始学习如何在模块上使用导航吧。 嵌套导航图 我们从导航图开始。..." android:label="DonutEntryDialogFragment"> uri="myapp://navdonutcreator.com...> 所选择的 Fragment 之间的导航被迁移至嵌套图中。...implementation project(":core") //.. } 请注意这里的导航图没有任何变化,它不受这些修改的影响: △ 导航图没有发生变化 现在如果运行应用,所有的功能一如往常...通过上述修改,我将咖啡记录模块和与它相关的导航流从应用中分离了出来,也就意味着咖啡记录模块可以独立于甜甜圈记录应用使用。

    2.2K30

    JSBridge小科普

    常用的三方库如Dsbridge系列(https://github.com/wendux/DSBridge-Android)。那么,你知道JSBridge到底是如何在两端进行通信的吗?...Web调用Native能力 1.1 通过URI Schema请求(全局注册) Native应用可以在移动端系统中注册一个Schema协议的URI,这个URI可以在系统的任意地方授权访问,用来调起一段原生方法...比如,通过添加一个不可见的iframe,设置其src属性,发送一个URI请求。...一旦系统捕获到注册表中的Schema URI,就会通过此URI地址执行该Schema协议定义的Native操作,执行一段Native代码或者打开APP的某个页面(如打开摄像头,唤起图片预览功能,跳转APP...webView.loadUrl("javascript:log('"+text+"')"); } } 4.4 以后,可以使用 evaluateJavascript 方法实现(效率更高,可获取返回值

    3.2K30

    android之存储篇_ContentProvider存储

    其他应用程序通过ContentResolver和Uri来获取此ContentProvider的数据。   ...例如;”content://com.test.data.myprovider”       C:路径,可以近似的理解为需要操作的数据库中表的名字,如:”content://hx.android.text.myprovider.../name”中的name     D:如果URI中包含表示需要获取的记录的ID;则就返回该id对应的数据,如果没有ID,就表示返回全部;   下面通过是代码示例,演示一下如何在应用之间相互获取数据。   ...android:name=".MyProvider" android:authorities="com.test.MyProvider"/> 在应用程序B中,通过ContentResolver...= ctx.getContentResolver(); //获取Uri对象 Uri uri = Uri.parse("content://com.test.MyProvider

    68410

    Android7.0适配心得

    从Android6.0引入的动态权限控制(Runtime Permissions)到Android7.0的“私有目录被限制访问”,“StrictMode API 政策”。...如何让你的APP能够适应这些改变而不是cash,是摆在每一位Android开发者身上的责任。 目录被限制访问 一直以来,在目录及文件的访问保护方面iOS做的是很到位的,如:iOS的沙箱机制。...心得:上述代码通过FileProvider的Uri getUriForFile (Context context, String authority, File file) 静态方法来获取Uri,该方法中...另外,推荐大家使用开源工具库TakePhoto, TakePhoto是一款在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库。...设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库。

    1.6K50

    Android使用DragAndDrop拖拽效果实现宫格位置变换

    前言 原来产品中有个功能要实现宫格中库位的移库效果,以前一直没做这块,也是为了先赶产品,所以没有做实现的拖拽效果,最近正好有时间,研究了一下DragAndDrop,做了一个Demo验证了一下,效果还是挺不错的...监听方通过DragEvent#getLocalState()方法来获取数据。...和DRAG_FLAG_GLOBAL_URI_WRITE配合使用,the URI permission grant applies to any URI that is a prefix match against...在ClipData数据中,我们通过Intent传递,直接用ClipData.newIntent的方法实现,传入的是原来的位置,这样直接从列表中定位到对应序号就可以查到数据。...上图中的顺序,点击打印按钮可以看一下输出列表。 可以看到输入的和界面上的也完全一致。

    2.7K10

    Android数据存储实现的5大方式

    菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data...那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基本一样,只不过是采用URI来表示外界需要访问的“数据库”。...定义一个名为CONTENT_URI,并且是public static final的Uri类型的类变量,你必须为其指定一个唯一的字符串值,最好的方案是以类的全名称, 如: public static final...这里给出一种常用的格式: vnd.android.cursor.item/vnd.yourcompanyname.contenttype (单个记录的MIME类型) 比如, 一个请求列车信息的URI如content...vnd.android.cursor.dir/vnd.yourcompanyname.contenttype (多个记录的MIME类型) 比如, 一个请求所有列车信息的URI如content://com.example.transportationprovider

    7.7K90

    【安卓安全】Intent 攻击面(上)

    默认导出设置为 false,此时可以在 APP 内部构造一个 intent 简单的启动这个 Activity(intent 是意图的意思,用来告诉系统我想要启动什么组件、用来做什么)例如下面这行代码就表示:从...startActivity(intent); 在 Activity 中可以通过 getIntent() 接收另一个组件通过 Intent 传入的数据,比如我修改 SecondActivity 代码如下,要求传入的意图中包含参数...的形式用来指定操作对象,如资源的地址,比如:http 指示打开网页、tel 指示拨号、file 表示本地文件,下面这段代码就表示启动拨号界面 Intent intent = new Intent(Intent.ACTION_DIAL...); intent.setData(Uri.parse("tel:123456789")); startActivity(intent); 回到题目,只需要额外通过 setData 设置 Uri 参数即可...系统才不会创建新实例,而是复用该栈顶实例并回调 onNewIntent() 首先带着 OPEN 这个 action 启动一次;然后等待一小段时间,设置 action 为 REOPEN,并给 Intent2 添加一个标记位

    82810

    相册适配 Android 11 绕的那些弯路

    假如你用的是 Glide,会在图中的代码位置抛出异常 image.png 三、Android 11 中 requestLegacyExternalStorage 属性失效 在继续翻阅官方文档后,又得知了一个信息...大致如下三步 获取媒体数据 id 获取缩略图 uri 用 uri 加载缩略图 val projection = arrayOf(     MediaStore.Video.Media....获取,那一定是没问题的。...浅谈 Glide 加载图片流程 image.png 这是我简单总结的 Glide 加载图片的流程,不做详细解释了,简单介绍一下图中的关键元素: 绿圈是时序 黄色方块代表输入、输出 粗实线框代表类 细实线框代表关键方法...虚线代表方法属于哪个类 图中的过程就是这段代码运行的过程 Glide   .with(imageView)   .asBitmap()   .load(uri) //或者 file path   .into

    2.1K30

    android: API24 及以上版本调用系统相机时报:FileUriExposedException 的解决

    那是因为,在调用系统相机的时候我们使用 Uri.fromUri(file) 来获取 URI 并传递给 调用系统相机的intent,代码如下: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE..., Activity.DEFAULT_KEYS_DIALER); 这种方式在 7.0 以前的版本中并没有任何异常,but , 从 7.0 (API 24) 之后这种方式就有问题了 ,因为 Uri.fromUri...(file) 得到的是 以“ file:// ” 开头的文件在本地的真实路径,Android 认为直接将这个真是地址对外暴露是有很多的风险的,所以,就会抛出上面截图中的异常信息。...为了解决这种风险,从 6.0 ( API 22 ) 开始,Android 提供了 FileProvider 类,我们通过调用 FileProvider 中的 getUriFromFile( ) 方法就可以得到一个...() 获取URI之后调用相机崩溃的情况 * 6、getExternalCacheDir()获取当前APP对应的缓存目录,使用该方式不用申请读写SD的权限 */ public class TakePhotoActivity

    89720
    领券