应用商店第二课--application层的实现

上一课讲到该应用商店的架构设计,设计的很简单,其实是没有扩展,再者这个项目本身就不是很复杂,设计的话就比较简单了。根据上一课的架构设计,这一课实现application层
application层的话在app开发中还是有固定套路的。另外application层是一个应用程序最先开始执行的地方(contentprovide的oncreate方法在application onCreate方法之前调用),这里初始化一些数据是常见的套路。application层常见的套路如下:

  • 用LeakCanary监控内存泄漏
  • 用StrictMode来优化性能
  • 日志打印工具类的初始化
  • crash日志捕获
  • 其他一些数据的初始化

在谈到application层的时候,有几个点需要注意,进程和线程的区别,我认为这个应该是要知道的,毕竟是最基础的东西了,我认为最大的区别是包裹关系,线程是CPU调度的最小单位,进程是系统分配资源的最小单位,一个进程至少有一个线程,在android应用中,进程的主线程是UI线程;在应用出现多进程的情况下会出现的问题有

  • application调用多次
  • 线程并发的会失效。
  • sharepreference不可靠
  • 单例模式失效

LeakCanary监控内存泄漏

这个在 网上有一大堆的介绍,我就不说了,我这边就把我的实现代码贴出来:

// 内存监控
LeakCanary.install(this);

很简单的一句话就OK了,在build.gradle获取依赖。

debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'

StrictMode来优化性能

严苛模式来优化性能,那么什么时候严苛模式呢?严苛模式是一个开发工具,能够检测程序中的违例,从而修复。最常用的地方就是主线程中disk的读写和network。目前有两大策略:线程策略(ThreadPolicy)和Vm策略(VmPolicy)。
严苛模式的使用:

 //当前是debug版本就使用严苛模式
if (ApkDebugableOrRelease.isApkDebugable(this)) {
       userStrictMode();
}
/**
 * 使用严苛模式
 */
private void userStrictMode() {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
}

日志打印工具类的初始化

日誌打印工具的話,看自己實現,每個人的實現都不同,但是一般应用的开发的话,都是在application初始化日志的。我这边把我的日志打印调用贴出来,更详细的代码,大家看我的github地址,我会把代码上传上去。

 //日志打印初始化
LoggerOpe.initLogLever(Log.VERBOSE, false, this);

crash日志捕获

crash日志的获取,这在现在应用中应该算是标配吧,要是连这个都没有的话,感觉效率会低很多,当然也有些因为安全问题不能打印。
我这边实现的crash其实也是参考网上大家的实现来的,下面我把调用贴一下,具体实现看github。

   // crash日志捕获
   CrashHandler crashHandler = CrashHandler.getInstance();
   crashHandler.init(this);

其他一些数据的初始化

这一块由于现在还是应用开始阶段,我现在也没有想全需要初始化哪些数据,这一部分后面再补充。

这里我把我的application贴出来:

package com.cjw.appstroe.application;
import android.app.Application;
import android.os.StrictMode;
import android.util.Log;
import com.cjw.common.log.CrashHandler;
import com.cjw.common.log.LoggerOpe;
import com.cjw.common.utils.ApkDebugableOrRelease;
import com.squareup.leakcanary.LeakCanary;
/**
 * Created: chnejiewei
 * data: 2016/11/10 21:01
 * blog: http://blog.csdn.net/u010392352
 * weibo:C-Xstart
 * description:
 */
public class AppStoreApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 内存监控
        LeakCanary.install(this);
        //当前是debug版本就使用严苛模式
        if (ApkDebugableOrRelease.isApkDebugable(this)) {
            userStrictMode();
        }
        //日志打印初始化
        LoggerOpe.initLogLever(Log.VERBOSE, false, this);
        // crash日志捕获
        CrashHandler crashHandler = CrashHandler.getInstance();
        crashHandler.init(this);
    }

    /**
     * 使用严苛模式
     */
    private void userStrictMode() {
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
    }
}

在博客中是不会单独讲到common层的,其实common层已经在实现了,比如我们的log类就实现在common里面,为什么?因为我们的log打印在我们整个的应用中都会涉及到,所以放在common是最好的,并且所有层都要依赖common层编译。

总结

至此,我们application层基本已经完成,整个application层的套路目前来看还是比较简单的。按照套路来一步一步走,可以很轻松的实现。接下来的一课我们,将要开始UI层的开发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matter-1.0-application-cluster是指一种应用集群,由多个应用实例组成。在计算机领域,应用集群是指将相同的应用程序部署在多个服务器上,以实现负载均衡和容错性。Matter-1.0-application-cluster基于Matter 1.0物联网协议,旨在为物联网应用提供高可用性和可靠性。 Matter 1.0是一个旨在统一物联网设备之间通信和互操作性的开放协议标准。它由业界领先的技术公司共同开发,包括谷歌、苹果和亚马逊。Matter协议的目标是让不同品牌、不同平台的物联网设备能够相互通信和协作,从而提升用户体验和便利性。 Matter-1.0-application-cluster将物联网应用部署在多个服务器上,可以实现负载均衡。负载均衡是一种分配服务器资源的技术,它可以将用户的请求均匀分配给多个服务器,从而提高系统的处理能力和响应速度。当某个服务器出现故障或过载时,负载均衡可以将请求转发到其他正常的服务器上,确保应用的连续可用性。 另外,通过部署多个应用实例,Matter-1.0-application-cluster还可以提供容错性。容错性是指系统在出现故障时仍然能够正常运行的能力。当一个应用实例出现故障时,其他正常运行的实例可以顶替其工作,确保应用的正常运行。 总的来说,Matter-1.0-application-cluster是一种基于Matter 1.0物联网协议的应用集群,通过负载均衡和容错性提高物联网应用的可用性和可靠性。它能够支持更多的设备连接和更复杂的场景,为用户提供更好的物联网体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值