首页

源码搜藏网

首页 > 安卓源码 > 功能分类 > 项目源码 >

Android上福利满满的应用,宅男神器美女图库

创建时间:2018-01-15 16:01  

Android上福利满满的应用,宅男神器美女图库
Android上福利满满的应用,宅男神器美女图库
暂无演示 立即下载

果肉一款福利满满的app,数据源mzitu,MD风格的界面

如果你是一位想学习一下科特林的同学,那么绝对不要错过肉。如科特林所说它与Java的完美兼容,所以这里有科特林调用Java的,同时也有Java的调用科特林。数据是从网站上爬取的所以这里也有爬虫骚操作。果肉将会不定期更新,增加更多福利。

国际惯例,先上福利。Release1.0

富利

特点

  1. 列表显示图片,点击查看更多。
  2. 快速跳转至顶部,底部,指定位置。
  3. 收藏,查看历史记录。
  4. 设置壁纸。
  5. 离线缓存。

组成

  1. 语言:科特林,爪哇
  2. 网络请求:HttpURLConnection的
  3. 数据库:sqlite的
  4. 数据源:Jsoup
  5. 第三方库:滑翔

概述

1)网络请求

网络框架并没有使用RxRetrofit等,为了保证精简高效直接使用的HttpURLConnection类

val  request  = AsyncNetwork()
请求请求(常量HOST_MOBILE_URLnull)
请求setRequestCallback(object  IRequestCallback {
     override  fun  onSuccesshttpURLConnection  HttpURLConnection?,response  String){
         //待办事项
    }
})
val  request  = AsyncNetwork()
请求请求(常量HOST_MOBILE_URL,mutableMapOf())
请求setRequestCallback(object  IRequestCallback {
     override  fun  onSuccesshttpURLConnection  HttpURLConnection?,response  String){
         //待办事项
    }
})

2)数据库

数据库没有使用第三方框架,直接使用的SQL语句。

CREATE  TABLE  tb_class_page_list(
                    _id            INTEGER  PRIMARY KEY  ASC AUTOINCREMENT,
                    href STRING独特,
                    说明STRING,
                    image_url STRING,
                    id_class_page INTEGER  REFERENCES tb_class_page(_id)ON DELETE CASCADE  ON  UPDATE CASCADE,
                    [index]        INTEGER);

3)读写缓存

序列化的效率远低于Parcelable,所以采用Parcelable实现的缓存机制,速度快了大概7,8倍。

VAL  助手 = PageListCacheHelper(?容器?上下文?FILESDIR  absolutePath)
 VAL  pageModel  不限=帮手得到(钥匙)
VAL  助手 = PageListCacheHelper(上下文 FILESDIR  absolutePath)
帮手把(钥匙,对象)
VAL  助手 = PageListCacheHelper(上下文 FILESDIR  absolutePath)
帮手删除(钥匙)

4) jsoup获取数据

由于数据是用从HTML页面中提取的,所以速度偏慢,为了不影响体验做了一套缓存机制,来做到流畅体验。

Document doc =  Jsoup 解析(HTML);
元素元素=正文getElementsByTag( a );
字符串文本=元素得到(0文本();
String imageUrl =元素得到(0attr( src );
...

5)组件

6)序列化性能

性能测试,Serializable VS Externalizable,为了避免干扰,我们使用AndroidTest进行测试。

模型

 Model1  实现 Serializable {
     String text;
    int code;
    布尔布尔;
    Model1儿童;
}

 Model2  扩展 Model1  实现 Externalizable {

    public  Model2(){
    }

    @Override 
    public  void  readExternalObjectInput  inputthrows  IOExceptionClassNotFoundException {
        文本=输入的readUTF();
        代码=输入的readInt();
        bool =输入readBoolean();

        child =  new  Model2();
        孩子文本=输入的readUTF();
        孩子代码=输入的readInt();
        孩子bool =输入readBoolean();
    }

    @Override 
    public  void  writeExternalObjectOutput  outputthrows  IOException {
        输出writeUTF(文本);
        输出writeInt(代码);
        输出writeBoolean(布尔);
        if(child !=  null){
            输出writeUTF(孩子文本);
            输出writeInt(孩子代码);
            输出writeBoolean(孩子布尔);
        }
    }
}

测试

@Test 
public  void serializableVSExternalizable()throws Exception {
     List < Model1 > testModel1 =  new  ArrayList <>();
    forint i =  0 ; i <  50000 ; i ++){
         Model1 model1 =  new  Model1();
        model1 text =   Hello World   + i;
        model1 code = i;
        model1 bool =  false ;

        Model1 child =  new  Model1();
        孩子text =   Hello World Child   + i;
        孩子code = i;
        孩子bool =  false ;

        model1 孩子=孩子;
        testModel1 添加(MODEL1);
    }
    long startTime =  System 的currentTimeMillis();
    File file =  new  File / sdcard / serializable );
    ObjectOutputStream oStream =  new  ObjectOutputStreamnew  FileOutputStream(file));
    OStream 的writeObject(testModel1);
    OStream 关();
    日志E( 串行化写入时间  +系统的currentTimeMillis()-开始时间));
    startTime =  System 的currentTimeMillis();
    ObjectInputStream iStream =  new  ObjectInputStreamnew  FileInputStream(file));
    testModel1 =List < Model1 >)iStream 的readObject();
    iStream 关();
    日志E( 串行化
上一篇:Android一款类似印象笔记的App,随时记录您的生活点滴
下一篇:Android一个免费下载音乐的App音乐助手

相关内容

热门推荐

  1. 1
/ 1
  1. 1
/ 1