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

浅谈MVP模式

端午放假,天气下雨,于是乎在家撸一下博客,本篇博客将为大家解析MVP模式在应用。 本文将从以下几个方面对MVP模式进行讲解: 1.  MVP简介 2.  为什么使用MVP模式 3.  ...MVP内存泄露问题 1.  MVP简介: 随着UI创建技术功能日益增强,UI层也履行着越来越多职责。...为什么使用MVP模式 在Android开发,Activity并不是一个标准MVC模式Controller,它首要职责是加载应用布局和初始化用户界面,并接受并处理来自用户操作请求,进而作出响应...当我们将其中复杂逻辑处理移至另外一个类(Presneter)时,Activity其实就是MVP模式 View,它负责UI元素初始化,建立UI元素与Presenter关联(Listener之类...在各个ActivittyPresenter有很多类型,所以在BaseActivitty,也需要对Presenter进行抽取成BasePresenter,MVPPresenter是持有view引用

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

开发_深入理解Content Provider

一、Content Provider概述 Content Provider用于保存和获取数据,并使其对所有应用程序可见,这是不同应用程序之间共享数据唯一方式,因为在Android没有提供所有应用可以共同访问公共存储区域...,在清单文件元素authority属性声明该authority ,对于第三方应用,该部分为完整类名(全部小写字母) (3)/dba :路径部分,用于决定哪类数据被请求,如果Content...Content Provider 1、  系统提供了很多预定义Content Provider(声音,联系人,通话记录等) Eg: Browser :读取或修改书签,浏览历史或网络搜索 CallLog...3、  增加记录 (1)       向ContentProvider添加数据,需要使用ContentValues对象建立键值对映射,键位Content Provider字段,值为要添加值 (2...21 public static final String AUTHORITY="com.xqx_mydatabase"; 22 //为该组件可以被外界访问 数据库资源定义Code

65640

基础干货(八):进程学习

Service,重写onCreate方法; 2、在清单文件配置服务; 3、在activity开启服务; 4、在onCreate方法中使用TelephonyManager监听电话状态;...:解除服务,停止服务里面的方法; stopService:停止服务,销毁服务对象; 为什么要引入bindserviceAPI 为了调用服务业务逻辑方法。...; IPC: Inter Process Communication(进程间通讯); aidl: Android Interface definition language 接口定义语言; aidl...接口类里面不需要public 、protected、private 等修饰符,默认是公开共享; 步骤: 1、创建一个服务接口类,里面包含需要对外暴露业务逻辑方法: 2、让服务中间人实现了服务接口类...: 3、修改并拷贝接口文件: 4、在本地服务工程activity里,绑定服务: 5、通过接口调用远程服务方法:

4K10

基础干货(七):广播学习

为什么需要广播接受者 广播: 1、电台:发送一定频道广播消息,50mhz; 2、收音机:调整到一定频道,接收广播消息; android应用程序里面的电台:系统内置一个服务,会把事件(电量不足、电量充满...、开机启动完成)作为一个广播消息发送其他接收者; android应用程序里面的收音机:自己写一个广播接收者一个类。...,系统会自动启动广播接收者进程,调用onReceive方法,接收消息。...2.3模拟器,4.0之后版本没有卸载、挂载、移除SD卡功能。...就能接收到广播; //发送一个广播消息(无序广播) sendBroadcast(intent); 有序广播: 当广播把消息发送出去后,消息会根据广播接收者优先级从高到低一级一级地下发消息。

3.9K10

日历_公认不卡手机

/ 下一个yue date .add(j);  j++; }  } 这里简化了操作,项目中我把每个数据都转化成了joda-time...: 1、是不是本月数据(用颜色区分本月和其他月数据) 2、是不是今天 3、有没有选中日期 4、显示不显示农历 其中今天和选中日期用圆环表示,就需要在当天和选中日期矩形绘制圆环。...break; } } return true; } }); 里面写了一些回调,方便在ViewPager跳转到相应月份...剩下操作放到了ViewPager完成,如果不是本月就跳转再设置选中日期,如果是本月,就直接设置选中日期: @Override public void onClickCurrentMonth...中使用,只需在布局文件设置MonthCalendarlayout_width和layout_height即可: <com.necer.ncalendar.calendar.MonthCalendar

4.8K30

基础干货(六):Activity学习

AndroidManifest文件几个细节 结论: 1、一个应用程序可以创建多个桌面图标 2、创建快捷图标的方法: //应用程序入口 <action...标签值就它界面的标题 4、activitylabel标签值就它桌面快捷图标的名称 5、applicationlabel标签和activitylabel标签不是一个概念,application...label表示应用程序名称,activitylabel标签表示是它界面的名称。...: 代码: /** * requestCode 开启activity时设置请求吗 * resultCode 在目标activity设置结果码 * data 第二个界面返回数据 */ @Override...配置文件设置 android:launchMode="singleTop" 如果任务栈栈顶存在这个要开启activity,不会重新创建activity,而是复用已经存在activity。

2.8K10

基础干货(四):网络编程学习

e.printStackTrace(); } }; }.start(); } } 线程不能修改UI界面 activity...oncreate方法和单击事件方法都是运行在主线程。...runOnUiThread 消息处理机制原理(重点) 步骤: 1、主线程创建handler private Handler handler = new Handler(){ }; 2、在线程得到...当我们Android应用程序进程一创建时候,系统就给这个进程提供了一个Looper,Looper是一个死循环,它内部维护这个一个消息队列,Loop不停地从消息队列取消息(Message),取到消息就发送给了.../src/com文件夹拷到自己代码src目录 2、调用image.setImageUrl(item.getImage())方法加载图片 imageLoader 开源项目 不重复发明轮子

14.9K10

开发_深入理解Handler消息传递机制

一、概述 因为子线程run()方法无法修改UI线程(主线程)UI界面,所以Android引入了Handler消息传递机制,实现在新创建线程操作UI界面 二、消息类(Message) 消息类是存放在...,可以将要携带数据保存到Bundle对象,然后通过Message类setDate()方法将其添加到Message 注: 1、尽量使用Message.what标识信息,方便用于不同方式处理Message...而在非主线程,是没有Looper对象,没有Looper对象就不能创建Handler对象 so,在主线程中直接创建Handler对象是可以。...//会创建一个Looper对象,并把该对象放入到该线程本地变量,在Looper构造方法创建了MessageQueue对象 //在子线程实例化handler,子线程没有...------------- 让我们看几个例子来深入理解下Handler消息传递机制 1、子线程向主线程发送消息 在主线程启动一个子线程下载图片,子线程传消息递给主线程,让主线程处理。

83160

基础干货(十):多媒体编程学习

多种媒体综合。图片、音乐、视频。 计算机表示图形方式 1、bmp 以高质量保存所有类型图片,用于计算机。...每个像素点颜色是一个RGB,使用6个十六进制数值来表示。 文件头信息占用数据大小。 体积比较大。 2、jpg 以良好质量保存图片,用于计算机、电子邮件或网络。...解决办法:缩放图片加载到内存 步骤: 1、获得设备屏幕分辨率; 2、得到原图分辨率; 3、通过比较得到一个合适比例值; 4、按照比例值缩放图片 5、把图片显示在imageview 缩放图片并加载到内存...Environment.getExternalStorageDirectory()+"/lp.jpg", opts); //5、把图片显示在imageview iv.setImageBitmap(bm); } } 在内存创建原图副本...1 引入vitamio框架 以library形式引入 2 在布局定义VideoView <io.vov.vitamio.widget.VideoView android:id="@+id

1.4K10

基础干货(三):数据库学习

---- title: 基础干货(三):数据库学习 copyright: true categories: 基础干货 date: 2018-01-10 19:35:26 tags: [Android...BLOB(二进制对象)数据类型,也接受varchar(n)、char(n)、decimal(p,s) 等数据类型, SQLite最大特点是你可以把各种类型数据保存到任何字段,而不用关心字段声明数据类型是什么...例如:可以在Integer类型字段存放字符串,或者在布尔型字段存放浮点数,或者在字符型字段存放日期型值。...在android应用程序创建按数据库步骤: 1、写一个DBHelper,继承了SQLiteOpenHelper,重新写了父类构造方法、onCreate、onUpGrade: //创建数据库 DBHelper...使用ArrayAdapter为listview填充数据步骤: 1、在布局文件添加ListView 2、在代码初始化这个listview控件 3、调用listview.setAdapter()填充数据

2.7K20

系统usb调试在哪_手机usb调试

大家好,又见面了,我是你们朋友全栈君。 Android手机USB调试在哪?手机如何打开USB调试模式?...如果我们要将手机连接到电脑上,从而传输文件、下载应用或ROOT等,都需要打开手机USB调试模式。...系统版本有很多,它们打开方法也各不相同,下面给大家介绍各版本手机打开USB调试模式方法。...4、再返回设置菜单界面选择开发者者选项; 5、点击打开右上角开关,即可打开 USB调试模式; 6、打开USB调试模式后,下拉手机通知栏,将手机上连接电脑USB模式设置为“仅充电”模式或“媒体设备...上述便是手机打开USB调试模式方法,需要将手机连接电脑下载应用或干嘛,可以按照小编描述方法来打开USB调试模式。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

3.8K40

Serializable 比 Parcelable好在哪?

一、序列化目的: --------- (1)永久保存对象,将对象数据保存在文件、磁盘或者数据库 。 (2)通过序列化操作将对象数据在网络上进行传输 。 (3)将对象序列化之后在进程间进行传输。...(3)在中使用 Intent 进行传输时候,数据类型较为复杂需要进行序列化操作 。 二、两者区别: ------- (1)....而Parcelabel实现,不仅需要实现Parcelabel接口,还需要在类添加一个静态成员变量CREATOR,这个变量需要实现 Parcelable.Creator 接口,并实现读写抽象方法。...,不仅需要实现Parcelabel接口,还需要在类添加一个静态成员变量CREATOR,这个变量需要实现 Parcelable.Creator 接口,并实现读写抽象方法。...相关视频推荐: 【面试必看】Serializable原理以及面试点详解 加粗 本文转自 https://juejin.cn/post/6844903864756338701,如有侵权,请联系删除

43500

/distributions/ 比如下载2.4版本就要找2.4版本all 2.改变gradle环境变量配置 先在我电脑右键 注意是在系统变量里改 改gradle文件夹存放名字,我都装在一个文件夹下了...这里应该是引用这个目录下debug.keystore文件而没有找到引起 7.模拟器怎么上网 方法一 PC机可以上网,PC机上面的Android模拟器不能上网。...其实只要使模拟器跟自己PC在同一个网段内就行了: 首先,如果没有配置sdk环境变量,那么在CMD命令下进入sdk安装路径platform-tools目录下(D:\Program Files\...方法2 首先 确保你当前电脑可以联网 然后打开模拟器浏览器输入常用网址, 例如 www.baidu.com 看看是否能够联网 如果访问失败 在本机在 cmd ping www.baidu.com...获得百度 ip 地址 然后在浏览器输入 https:// 百度 ip 地址 看看是否能够访问 如果能够访问 那么你就遇到了和我一样问题 请继续看 打开你 sdk 目录 emulator

40520

Android--SVG在系统应用

SVG,即Scalable Vector Graphics 可伸缩矢量图形,这种图像格式在前端已经使用非常广泛了 SVG图片相对于一般图片(png、jpg等),拥有占用体积小,支持等比例缩放不失真...,性能高等优势,谷歌在Android5.0引进了SVG,并转化为Vector,在Android中指的是Vector Drawable,也就是Android矢量图,可以说Vector就是Android...SVG实现(并不是支持全部SVG语法,现已支持完全足够用了) Vector图像刚发布时候,是只支持Android 5.0+,自从AppCompat 23.2之后,Vector可以使用于Android...Vector 语法简介 通过使用它Path标签,几乎可以实现SVG其它所有标签,虽然可能会复杂一点,但这些东西都是可以通过工具来完成,所以,不用担心写起来会很复杂。...添加 defaultConfig { vectorDrawables.useSupportLibrary = true } 1.2、在gradle添加 compile

2.7K20

对于文件夹综合操作

,然后清理一下空文件夹 自定义文件夹大小过滤,最后以一个文件夹浏览器小案例总结全文。...查看文件夹下所有文件夹大小.png 4.高阶:将文件夹所有文件夹大小信息输出到SD卡 1).用列表保存数据 public long dirListSize(File dir, List<String...+ "----大小:" + size / 1024.f / 1024 + "MB"); } } } return size; } 2).将列表数据写出到...将信息保存到文件.png ---- 二、空文件夹 1.空文件夹检测比较简单,将加入列表条件限定一下即可 /** * 获取某文件夹下所有空文件夹 * * @param dir 根文件夹...项目源码 日期 备注 V0.1--无 2018-10-26 对于文件夹综合操作 2.更多关于我 笔名 QQ 微信 爱好 张风捷特烈 1981462002 zdl1994328 语言 我github

1.5K20
领券