[UWP]爱恋动漫BT开发小记
在七月和某个人相识,在七月又和这个人重回陌路,在这个伤感的七月,让我来水一篇博客。
已经很久没有写博客了,最近现在来写一篇,总结一下这个七月。
今年的暑假特别的长,大概六月中旬就考完试了,而开学一直要到九月初。中间有两个月的假期,可以好好的“玩”和学学编程了。虽然暑假很长,但是感觉时间过得特别快,每天都是起床,往电脑前面一座,然后天黑了,继续睡觉,就一直这样重复重复。一晃眼好几周就过去了。但总的来说呢,这个七月还是干了点事儿的。
七月初的时候,回了一趟家,在家呆了大概七天左右,然后就回学校实习去了。说起实习,感觉的确是好尴尬。虽然面试到了一家互联网公司,但是面试的职位是个编辑,题库编辑,就是很苦逼的一天校对文本,文本录入,对着电脑看一天的word,感觉很枯燥,很无聊。所以干了整整七天后,离职了。离职后其实也挺好,我终于有大把的时间来看看编程方面的东西了。
之前一直学习C#,算是入了微软的坑了,现在反正就是.net方面的都有看,但看的都不多。微软前不久发布了.Net Core 1.0,感觉是个很牛的东西。本着也来学学它的精神,在七月中旬我开始制作一个个人博客(www.cjw1115.com),用的自然就是基于asp.net core了,而在数据存储方面用了ef core和sqlite。由于我的前端功底真的很渣,所以没有怎么做美化界面的事儿,整个博客系统也没有用到AJAX,想着以后慢慢加吧。值得一提的是,作为微软MSP的奖励,我有一年的msdn订阅,各种微软正版软件免费用,好爽!里面还包含有azure的订阅,我自然是把网站全面部署到了Azure上,不过貌似现在也只有Azure的虚拟机的iis支持Asp.net Core吧。
说的有些跑题了,在七月末,我开始了制作这个爱恋动漫BT的UWP客户端,不过很坑爹的一件事儿是这个爱恋动漫BT和wp一样,也是个小众的产品,它甚至没有安卓和IOS客户端,不过本着练手的原则,我还是简单的开发了一下。
开发有两个重点,一个就是爱恋动漫bt相关内容展示方面的开发,另外一个就是内置下载器的开发。
一、就爱恋动漫本身来说,大概有这么几步吧
1.获取各种资源的接口:这个就很尴尬了,这个网站没有官方app,但是有一个针对移动设备优化过的移动版的web站点,很遗憾,它所有页面全部是由服务器端渲染完成后返回的,整个站点找遍了,连个json的毛都没找到。那所有的数据只能通过解析html来获取了。
2.数据解析:因为基本页面其实就两个,一个是资源列表页面,用了大量的<li>标签,这个很容易获取;而另一个页面是关于资源的详情展示页面,我在这儿偷了一个懒,把详情展示页面不变动的地方本地化了,把具体的资源描述内容这种变化比较大的,通过webview直接展示,不仅省力,而且还不失美观。
3.页面设计:关于页面设计,很自然的和官方的页面一一对应就行。用了MVVM,针对这种大量数据的,用数据绑定真的好爽。
二、下载器方面主要有以下几点
1.下载器无非就两个页面,一个下载中,一个下载完成,所有数据的存储都使用了sqlite,通过ef core来操作sqlite的确是非常便捷。
2.整个下载其实完全依赖了uwp自带的BackgroundTransfer类。整个下载过程只需要控制开始,暂停,结束就行了。
3.有想过做p2p的下载,但是这个工作量应该不小,所以就先缓缓。
整个工程中,其实都是MVVM和Code-hehind混合使用的,的确设计的很乱,以后应该要好好整理一下,好好做做分层。
在发布后,我从商店下载安装使用了一下,很明显的两个bug就暴露出来了。
第一个就是顶部状态栏编程一道白条,遮挡了系统状态栏的所有图标和信息。其实之前在做工大助手的时候也有遇见过,但当时以为是系统的bug,所以没有关心,这次才发现,是有一个判断平台特定api可用性的函数失效导致的(估计是.net native编译有关),所以最后的解决办法就是直接判断平台是什么,而不是判断这个api是不是适用于这个平台。
//不可靠的方法
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(typeof(StatusBar).ToString()))
{
StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
statusBar.BackgroundOpacity = ;
statusBar.BackgroundColor = brush.Color;
}
//可靠方法
if ("Windows.Mobile" == Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily)
{
StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
statusBar.BackgroundOpacity = ;
statusBar.BackgroundColor = brush.Color;
}
第二个BUG也是最让我纠结的一个,因为在发布版本里面会出现这个问题,但是在调试的时候并不会。后来注意到,发布的时候是全新的.net native编译方式,而调试的时候是传统的编译方式,这就很尴尬了,我必须去用.net native编译后测试,让人最受不了的就是这种编译方式太慢了,编译的时间长到足以让我去打个水,回来再泡个茶,这个还不够,剩余时间还能去上个厕所!不过还好,最后也发现问题了,问题在于,我在项目里使用sqlite和ef时,使用的是ef 7相关的一些程序集,在构造我的实体类的时候,会发生类型初始化错误。后来把ef 7换成了ef core 1.0后问题就解决了。
顺便附上最权威的相关资源学习地址
哎,不过最忧伤的事儿还是喜欢的姑娘和她男朋友分手了,她却把我的微信删了.......
并不是吐槽她什么,只是觉着这种处理方式有些欠妥......
毕竟我没有做错什么......
求老司机指点!
[UWP]爱恋动漫BT开发小记的更多相关文章
- NodeJS+Express+MySQL开发小记(2):服务器部署
http://borninsummer.com/2015/06/17/notes-on-developing-nodejs-webapp/ NodeJS+Express+MySQL开发小记(1)里讲过 ...
- 带农历日历的DatePicker控件!Xamarin控件开发小记
原文:带农历日历的DatePicker控件!Xamarin控件开发小记 闲来无事开发了个日期选择控件,感兴趣的同学前往: https://github.com/MatoApps/Mato.DatePi ...
- UWP开发小记
针对个人的上一篇文章中提到的遇到的几个问题,做一下个人解答 DLL部署的问题,可以将DLL添加到工程中,属性中设置content为true,这样,部署目录下就会有这个文件. 需要说明的是,这个文件确实 ...
- 承接微信小程序外包 H5外包就找北京动点软件开发团队
承接小程序外包 微信小程序外包 H5外包 就找北京动点软件 长年承接微信小程序.微信公众号开发 全职的H5开发团队,开发过几十款微信小程序公众号案例 欢迎来电咨询,索取案例! QQ:372900288 ...
- thu-learn-lib 开发小记(转)
原创:https://harrychen.xyz/2019/02/09/thu-learn-lib/ 今天是大年初五,原本计划出门玩,但是天气比较糟糕就放弃了.想到第一篇博客里面预告了要给thu-le ...
- 手把手教你使用FineUI+动软代码生成器开发一个b/s结构的取送货管理信息系统(附源码)之开篇
一 本系列随笔概览及产生的背景 近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座, ...
- Electron Angular 开发小记
一介绍 electron分为主进程和渲染进程,主进程负责和原生交互,控制窗口等. 渲染进程就是普通网页.主进程和渲染进程可以通过ipcMain(主进程使用)及ipcRenderer(渲染进程用)通信 ...
- 微软颜龄Windows Phone版开发小记
随着微软颜龄中文网cn.how-old.net的上线,她也顺势来到了3大移动平台. 用户在微软颜龄这一应用中选择一张包含若干人脸的照片,就可以通过云计算得到他们的性别和年龄. 今天我们就和大家分享一下 ...
- MQTT开发小记(一)
最近在协助公司硬件组进行MQTT协议的嵌入式SDK包开发. 简述一下MQTT MQTT简单的来说是一种订阅/发布模式的通信形式,一般分为客户端和服务器端. MQTT服务器端可以简单理解为一个消息中转站 ...
随机推荐
- OC 线程操作 - GCD使用 -线程通讯, 延迟函数和一次性代码
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // [self downImag ...
- Spring基于AspectJ的AOP的开发之AOP的相关术语
1. Joinpoint(连接点) -- 所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring只支持方法类型的连接点(任何一个方法都可以称为连接点) 2. Pointc ...
- Cairo编程
一.简介 cairo 是一个免费的矢量绘图软件库,它可以绘制多种输出格式.cairo 支持许多平台,包括 Linux.BSD.Microsoft® Windows® 和 OSX(BeOS 和 OS2 ...
- C语言文本处理
一.conf文本 http://blog.163.com/lixiangqiu_9202/blog/static/53575037201431743236762/ http://blog.csdn.n ...
- UI设计必用工具 — AI快捷键大全
01 常用工具 V 选择工具 A 直接选择工具 Y 魔棒工具 Q 套索工具 P 钢笔工具 Z 缩放工具 R 旋转工具 O 镜像工具 M 矩形工具 L 椭圆工具 B 画笔工具 N 铅笔工具 C 剪刀工具 ...
- JVM 系列 ClassLoader
JVM 系列()ClassLoader 在前面一节中,主要介绍了 Class 的装载过程,Class 的装载大体上可以分为加载类.连接类和初始化 3 个阶段.本小节将主要介绍绍 Java 语言中的 C ...
- 电商类Web原型制作分享-IKEA
IKEA是一个家居整合大型零售商,属于电商类官网.电商以展示商品.售后服务.购物流程为主.根据网站的图文方式排版,主导航栏使用的标签组,区域导航栏使用的是垂直选项卡,实现下拉弹出面板交互的功能. 本原 ...
- oracle 新建数据库 ,新建用户
net manager 数据库名----电脑名localhost 1521 , 服务名 orcl (oracle 版本不一样, 不同版本不一样,,) 然后测试.. sys 账号登录 新建用 ...
- sqlserver将数据库的数据导成excel文档方法
sqlserver将数据库的数据导成excel文档方法 最近公司需要下载uniport的数据跟之前的数据进行对比,所以避免不了需要将数据库的数据导出来,把SQLServer表中的数据导出为Excel文 ...
- Part 6 - Class-Based Views(21-26)
https://github.com/sibtc/django-beginners-guide/tree/v0.6-lw urlpatterns = [ views.PostUpdateView.as ...