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

android的四大主件

但其实,换个角度来看,Android中的服务,和我们通常说的Windows服务,Web的后台服务又有一些相近,它们通常都是后台长时间运行,接受上层指令,完成相关事务的模块。...所有东西看着像REST的样子,但实际上,它比REST更为灵活。...和REST类似,uri也可以有两种类型,一种是带id的,另一种是列 表的,但实现者不需要按照这个模式来做,给你id的uri你也可以返回列表类型的数据,只要调用者明白,就无妨,不用苛求所谓的REST。...另外,ContentProvider不和REST一样只有uri可用,还可以接受Projection,Selection,OrderBy等参数,这样,就可以像数据库那样进行投影,选择和排序。...我想这遵循的就是场景导向设计的原则,因为ContentProvider仅是提供数据访问的,它不能确信具体的使用场景如何,会怎样使用它的数据;而相比之下,Service包含的逻辑更复杂更完整,可以抉择大部分时候使用某接口的场景

46220

关于Android四大组件最权威最深刻最准确的解读(绝不标题党)

即使在google内部,论起对Android系统的理解把握,鲜有出其右者。在文章中,她深刻地阐明了Android设计四大组件的初衷,各个组件的目的作用,适用情景。...如果想阅读原文,请在google+上搜索Aannie Hackborn。 “我应该怎样设计我的APP?我应该采用什么样的架构模式?我需要使用event bus吗?”...我们经常看到Android平台开发者询问在APP中采用什么设计模式和架构之类的问题。...实际上,我在学校时只知道MVC,其他的架构模式是我临时google搜索后才写在这里的。...人们通常会将它们当作对数据库的抽象,因为有许多的API和支持库就是这样使用ContentProvider的。但是从系统设计的角度,这并不是ContentProvider的初衷。

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

    android四大组件

    这些均由系统来完成。   ...活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。因此对于开发者来说,在设计应用程序的时候,必须时刻牢记这一原则。...而启动service,根据onStartCommand的返回值不同,有两个附加的模式:   1. START_STICKY 用于显示启动和停止service。   2....以下这段是Google Doc中对ContentProvider的大致概述:   内容提供者将一些特定的应用程序数据供给其它应用程序使用。...2.ContentResolver   当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver类来完成,要获取ContentResolver

    1.1K10

    透过FileProvider来看看四大组件之一ContentProvider!

    自己可以不用申请存储权限,利用应用B就达到了存储文件的这一危险权限。 可以看到,这个之前落伍的方案,从自身到对方,都是不太好的选择。 所以Google就想了一个办法,把对文件的访问限制在应用内部。...从易用性,安全性,完整度等各个方面考虑,Google选择了ContentProvider为这次限制应用分享文件的 解决方案。于是,FileProvider诞生了。 具体做法就是: ContentProvider来调用这几个方法,来完成对本地应用数据的增删查改,从而完成进程间通信的功能。...关于面试知识点的复习 之前为了面试我花半年时间整理了一份大厂的《Android开发2020年度面试真题合集》,深入学习源码底层,架构设计。而已也刷了很多大厂面试真题。也切身体会到了一分耕耘一分收获。...IO 集合 Java 多线程 Java 高级(★★) Java 中的反射 Java 中的动态代理 Java 中的设计模式&回收机制 Java 的类加载器 Android 基础(★★★) Android

    96400

    赶鸭子上架之安卓开发速成

    没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。...可以在Design通过拖拽完成设计 也可以在Text通过代码实现。 我个人喜欢Design初步设计,然后通过Text细调设置。为了简单起见,使用绝对布局。...ACTION_REQUEST_ENABLE); startActivityForResult(enablelntent,1); 一种是静默模式的,这种模式需要在Androidmanifest文件中添加权限...ContentProvider暴露给我们的一些数据, 比如手机联系人,短信等!...概念 可以与用户交互的基本图形呈现单元 ¶2. 三种状态 运行状态:可以操作 停止状态:不可见,比如按了home键 暂停状态:新的activity把后面的遮盖 ¶3. 生命周期 ?

    2.3K20

    Android之 学习路线

    5.Java异常处理,异常的机制原理。  6.常用的设计模式:Singleton、Template、Strategy模式。 ...9.Java I/O输入输出流:File和FileRandomAccess类,字节流InputStream和OutputStream,字符流Reader和 Writer,以及相应实现类,IO性能分析,字节和字符...SQLite3事务管理 SQLite3游标使用方法 SQLite3性能分析 访问SDCard的方法 访问SharedPreferences的方法 3、ContentProvider使用方法:...ContentProvider实现共 享数据、URI 的解析与UriMatcher、ContentUris的使用、使用ContentResolver操作ContentProvider、 ContentProvider...第五阶段:android手机硬件管理 1、地图及定位技术:GPS简介;LocationManager的使用方法;在Google Map上添加标记的方法;查询某地附近建筑的方法;使用Google Map

    73510

    【随笔】android开发的学习路线

    5.Java异常处理,异常的机制原理。  6.常用的设计模式:Singleton、Template、Strategy模式。 ...9.Java I/O输入输出流:File和FileRandomAccess类,字节流InputStream和OutputStream,字符流Reader和Writer,以及相应实现类,IO性能分析,字节和字符的转化流...SQLite3事务管理 SQLite3游标使用方法 SQLite3性能分析 访问SDCard的方法 访问SharedPreferences的方法 3、ContentProvider使用方法:ContentProvider...实现共享数据、URI的解析与UriMatcher、ContentUris的使用、使用ContentResolver操作ContentProvider、ContentProvider的监听Android当中的异步操作...第五阶段:android手机硬件管理 1、地图及定位技术:GPS简介;LocationManager的使用方法;在Google Map上添加标记的方法;查询某地附近建筑的方法;使用Google Map

    85240

    Android面试遇坎,我精选了这些题目与答案,你离大厂还有多远测试一下就知道!

    从易用性,安全性,完整度等各个方面考虑,Google选择了ContentProvider为这次限制应用分享文件的 解决方案。于是,FileProvider诞生了。 具体做法就是: Google也是考虑到这一点,设计出了IntentService这种已经结合好的组件供我们使用。 9、后台和前台Service 这就涉及到Service的分类了。...在Android8.0,Google要求如果程序在后台,那么就不能创建后台服务,已经开启的后台服务会在一定时间后被停止。 所以,建议使用前台Service,它拥有更高的优先级,不易被销毁。...,然后会遍历没有完成的任务,通过Binder找到对应的JobService,执行onStartJob方法,完成任务。...首先,科普官方定义的两个状态。 onStart到onStop中间的状态叫做“已开始”状态。 onResume到onPause中间的状态叫做“已恢复”状态。

    3K00

    Android面试题(四大组件篇)

    当进行singleTop和singleTask模式的时候,存在对应的Activity,即会调用该Activity的onNewIntent()。 Q:了解哪些Activity启动模式的标记位?...调用unbindService将不会停止Service,而必须调用 stopService 或 Service的 stopSelf 来停止服务。 Q:Service如何和Activity进行通信?...AlarmManager提供对系统警报服务的访问。这些允许您在将来的某个时间点运行应用程序。当警报响起时,系统会广播已注册的意图,如果目标应用程序尚未运行,则自动启动它。...当设备处于休眠状态时,会保留已注册的警报(如果设备在此期间发生故障,可以选择将其唤醒),但如果设备被关闭并重新启动,则会清除该警报。...这意味着,在某些情况下,只要onReceive()方法完成,手机就会休眠。如果您的警报接收器调用Context.startService(),那么在启动所请求的服务之前,手机可能会休眠。

    1.2K20

    【Android】期末简答题

    一般情况下,一个活动会在 onCreate()方法中完成各种初始化操作,而在 onDestroy()方法中完成释放内存的操作。...计算机中的程序在港澳台地区称为程式。程序就是为使用电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令集合。   进程(有时被称为重量级进程)是程序的一次执行任务。...(生命周期在应用程序进程的主线程运行) 一个Service可以完成的工作:访问网络(在Service中启动分线程)、播放音乐、文件IO操作、大数据量的数据库操作等。...我的答案: 服务(Service)的停止和启动 1 .如果service是非绑定的,最终当任务完成时,为了节省系统资源,一定要停止service,可以通过stopSelf()来停止,也可以在其他组件中通过...我的答案: 1.系统管理类app,比如手机助手,有机会频繁使用ContentProvider 2.通讯录或者短信数据,是以ContentProvider的形式提供的 3.ContentProvider

    1.2K60

    Android面试题集合

    如何将一个Activity设置成窗口的样式 如何退出Activity?如何安全退出已调用多个Activity的Application? Activity中如何动态的添加Fragment?...开发指导——进程间通信AIDL ContentProvider 自定义一个contentProvider。...Asynctask的Do in background方法默认是返回 true ,表示任务完成,如果想返回具体的数据呢,怎么做。如果Activity被销毁了,还会执行到postexcutd方法吗?...开源项目及应用场景 文件和数据库哪个效率高 简述题(五) 常见设计模式,并手动简单实现观察者模式 Handler机制 热修复 简述静默安装的原理,如何在无需Root权限的情况下实现静默安装 什么是65535...手写代码 Java实现单例模式的正确姿势 Android面试——编程算法题 部分答案可参考:CSDN:剑萧舞蝶 原文出处:于卫国,http://yuweiguocn.github.io/android-interview-list

    98710

    食之无味?App Startup 可能比你想象中要简单

    举个例子,所依赖的组件需要执行一个耗时的异步任务才能完成初始化,那么 App Startup 就无法等待异步任务返回; 缺乏依赖回调: 当前组件所依赖的组件初始化完成后,未发出回调。...App Startup 利用了 ContentProvider 在应用启动的时候初始化的特性,提供了一个自定义 ContentProvider 来实现自动初始化。...很多库都利用了 ContentProvider 的启动机制,来实现无侵入初始化,例如 LeakCanary 等 使用 AppStartup 还能够合并所有用于初始化的 ContentProvider ,...App Startup 在初始化当前组件时,会保证所依赖的组件已经完成初始化。...InitializationProvider.java 已简化 public final class InitializationProvider extends ContentProvider {

    77330

    Android基础面试题

    ViewHolder这种设计模式省去了经常性findVIewById的调用,每次getView/BindView执行,需引用childView一次存储的标签(setTag)查看和使用那些重新引用的getView...B、共享者需要将SharedPreferences的访问模式设置为全局读或全局写。...C、如果采用文件操作模式对外共享数据,数据的访问方式会因数据存储的方式而不同,导致数据的访问方式无法统一。D、使用ContentProvider对外共享数据的好处是统一了数据的访问方式。...Service是由其他的组件启动的,但停止过程可以通过其他组件或自身完成。 36、以下关于绑定式Service的描述不正确的是(b ) A....一般不需要在组件的onDestroy()方法中调用unRegisterReceiver()方法,以取消已注册的BroadcastReceiver对象,清理资源。 D.

    1.5K20

    SharePreference原理及跨进程数据共享的问题

    Google推荐使用前一种,因为,就单进程而言,只要保证内存缓存正确就能保证运行时数据的正确性,而持久化,不必太及时,这种手段在Android中使用还是很常见的,比如权限的更新也是这样,况且,Google...之后又都调用了enqueueDiskWrite进行数据持久化任务,不过commit函数一般会在当前线程直接写文件,而apply则提交一个事务到已给线程池,之后直接返回,实现如下: private void...SharePreferences多进程使用问题 SharePreferences在新建的有个mode参数,可以指定它的加载模式,MODE_MULTI_PROCESS是Google提供的一个多进程模式,但是这种模式并不是我们说的支持多进程同步更新等...0,下面是Google文档,简而言之,就是:不要用。...响应的Google为多进程提供了一个数据同步互斥方案,那就是基于Binder实现的ContentProvider,关于ContentProvider后文分析。

    1.7K60

    精选Android中高级高频面试题:四大组件及Fragment原理

    ; onPause():表示Activity正在停止,此时可做一些存储数据、停止动画等工作,但是不能太耗时,因为这会影响到新Activity的显示,onPause必须先执行完,新Activity的onResume...A想要的任务栈,如果不存在,就会重新创建一个任务栈,然后把创建好A的实例放到栈中; singleInstance单实例模式:这是一种加强的singleTask模式,具有此种模式的Activity只能单独地位于一个任务栈中...参考回答: Service的生命周期涉及到六大方法 onCreate():如果service没被创建过,调用startService()后会执行onCreate()回调;如果service已处于运行中,...:服务停止时调用; 推荐文章:Android组件系列----Android Service组件深入解析 2、Service的两种启动方式?...推荐文章:Android:关于ContentProvider的知识都在这里了! 2、ContentProvider的权限管理?

    2.2K00

    行情艰难,Android初中级面试题助你逆风翻盘,每题都有详细答案

    ; onPause():表示Activity正在停止,此时可做一些存储数据、停止动画等工作,但是不能太耗时,因为这会影响到新Activity的显示,onPause必须先执行完,新Activity的onResume...standard标准模式:每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在,此模式的Activity默认会进入启动它的Activity所属的任务栈中; singleTop栈顶复用模式...A想要的任务栈,如果不存在,就会重新创建一个任务栈,然后把创建好A的实例放到栈中; singleInstance单实例模式:这是一种加强的singleTask模式,具有此种模式的Activity只能单独地位于一个任务栈中...参考回答:Service的生命周期涉及到六大方法: onCreate():如果service没被创建过,调用startService()后会执行onCreate()回调;如果service已处于运行中...ContentProvider:管理数据,提供数据的增删改查操作,数据源可以是数据库、文件、XML、网络等,ContentProvider为这些数据的访问提供了统一的接口,可以用来做进程间数据共享。

    94921

    使用composer写一个简单的区块链互助保险应用

    我们不清楚此互助平台具体哪些业务流程采用了区块链,也不发表意见此模式是否更有效率或公信力。仅仅针对这类模式的业务,分析如何使用composer来完成超级账本的智能合约开发。...先来看一张图: 这张图,简单的说明了composer的架构: .cto定义资产、用户角色、交易模式; .js 定义业务 一般新建一个名为logic的目录,里面放置实现业务逻辑的合约代码 .acl 定义访问权限.../composer start 或 停止....,赔付成功后,MIList记录每次的赔付记录,参保人账户会增加对应的赔付金额,MIAsset对应的保单会增加已赔付金额 transaction PayOut { } 5 Logic编写(lib\logic.js...按payOut参数指定保单Id, 获取保单信息:参与人数、已赔付金额 2. 按payOut参数指定的赔付金额,给指定赔付人赔付的金额 3.

    1.7K130

    使用 GraphQL 和 Ballerina 操作多个数据源

    GraphQL 是更好的 REST 在过去的十年中,REST 已经成为一种流行的 API 设计架构。...有两种设计 GraphQL 端点的方法: 模式优先方法:需要使用 GraphQL 模式来创建 GraphQL 服务。 代码优先方法:模式是不必需的,可以直接使用代码编写端点,然后生成模式。...书店的客户端可以通过 GraphQL API 完成以下这些操作: 获取所有书籍的详细信息; 通过提供书名获取书籍的详细信息; 向数据库中添加新书。...它将书籍的信息作为输入参数,并返回一个 int 值,这个值表示已插入的书籍的索引,如果发生错误就返回 -1。...Ballerina 内置了图表功能,可以基于已编写的代码生成完整的序列图。图表可以作为代码的文档,相比直接阅读源代码,这种方式更易于理解程序。

    2.9K20
    领券