Skip to content

Latest commit

 

History

History

seeweather

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

SeeWeather

就看天气——是一款遵循 Material Design 风格的只看天气的APP。
卡片展现(当前天气情况,未来几小时天气情况,生活建议,一周七天概况)
缓存数据,减少网络请求,保证离线查看
内置两套图标(设置里更改)

原作者Github项目:xcc3641/SeeWeather

项目中用到的知识

项目中的用到的开源框架

PS:debug情况下使用stetho以及Watcher以及bugstag,release版本仅使用bugstag(原 项目使用bughd)

项目开发遇到的问题

  • 其实当AS升级到3.0之后,若项目之前用了类似retrolambda(原项目用了)或者Jack这种 旧方案的话,会出现以下提示告诉你移除相关的代码:

    Warning:One of the plugins you are using supports Java 8 language features. To try the support built into the Android plugin, remove the following from your build.gradle: apply plugin: ‘me.tatarka.retrolambda’ To learn more, go to https://d.android.com/r/tools/java-8-support-message.html

    解决办法:Android Studio 3.0及Gradle Plugin 3.0升级注意事项

  • 之前的Gradle配置Android 开发之版本统一规范 或者android studio编程时出现的错误:Cannot get property 'XXXX' on extra properties extension as it does not exist - CSDN博客 ,都是直接在build.gradle里面配置的,第一次见另外起一个config.gradle来配置相关 信息的,但配置了大概之后sync一下就出现下面的bug:

    Error:(4, 0) Cannot get property 'android' on extra properties extension as it does not exist Open File

    • 解决办法:在Project的build.gradle首部加上 apply from: 'config.gradle'
  • 原项目开发使用的是BugHD,但很 遗憾就是它已经停止免费服务了,在这里我打算替换成bugtags

  • 一般项目在开发中使用OkHttp时候常用就是logging-interceptor来作为Log信息拦截 器,但还有就是使用FaceBook的stetho(它可以通过chrome的开发者工具从而辅助安卓开发) ,查阅了很久才搞懂,mark一下

  • 看到那么多Utils工具类的时候,一般使用常用工具类可以试试Blankj大神的AndroidUtil

  • 在原来的项目里面,清单文件里面的application标签里面出现下面两个属性

    android:hardwareAccelerated="true"
    android:largeHeap="true"
    

    这里我查阅了一下文章,安卓manifest中的android:largeHeap="true"作用 以及android学习——控制硬加速 hardwareAccelerated 在3.0才有的。

  • 关于BaseApplication类引发的OnErrorNotImplementedException异常:

     (BaseApplication.java:54) io.reactivex.exceptions.OnErrorNotImplementedException: Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String)' on a null object reference
    

    我找了很久都没有找到是怎么回事,根据debug之后才发现是RxJava里面的bug,这里我注 销了BaseApplication类相关的代码,代码如下:

            RxJavaPlugins.setErrorHandler(throwable -> {
                if (throwable != null) {
                    PLog.e(throwable.toString());
                } else {
                    PLog.e("call onError but exception is null");
                }
            });
    
  • 关于权限申请问题,如下

     java.io.FileNotFoundException: /proc/stat (Permission denied)
    

    这个项目权限处理不够,不如之前模仿的项目五次元妹子 那么周全,这里我准备如下处理:

    • 本来打算存入本地让LitePal进行查询,但目前的问题是raw/china_city.db写不进去 本地导致的,这里本来打算结合RxPermissions来弄的,可惜道行不够,被迫放弃,这里 选用了开源第三方库crazyandcoder/citypicker ,这里我把作者模块化city下面的类全注释了,这里开多了一个province模块
    • 缓存文件也放到内置内存卡去,如下
       sCacheDir = getApplicationContext().getCacheDir().toString();
      

项目中数据提供

开发中遇到的大神

  • 吴小龙同学,这博主的博客写的简洁精辟,现在Android 很多文章水平参差不齐,但他的文章排版内容等都很清晰,赞一个
  • Blankj大牛
    • 这个大牛还真的在做个项目的时用到他很多知识才去了解的,现在发现他涉猎挺广的, 关键是他还仅仅是大学生

推荐阅读-推荐的不仅仅是技术