美文网首页
如果发生了异常情况,怎么快速止损?

如果发生了异常情况,怎么快速止损?

作者: 皓皓amous | 来源:发表于2023-08-27 17:44 被阅读0次
    功能开关
    统跳中心
    动态修复:热修复、资源包更新
    自主修复:安全模式
    首先,需要让App具备一些高级的能力,我们对于任何要上线的新功能,要加上一个功能的开关,通过配置中心下发的开关呢,来决定是否要显示新功能的入口。如果有异常情况,可以紧急关闭新功能的入口,那就可以让这个App处于可控的状态了。
    
    然后,我们需要给App设立路由跳转,所有的界面跳转都需要通过路由来分发,如果我们匹配到需要跳转到有bug的这样一个新功能时,那我们就不跳转了,或者是跳转到统一的异常正处理中的界面。如果这两种方式都不可以,那就可以考虑通过热修复的方式来动态修复,目前热修复的方案其实已经比较成熟了,我们完全可以低成本地在我们的项目中添加热修复的能力,当然,如果有些功能是由RN或WeeX来实现就更好了,那就可以通过更新资源包的方式来实现动态更新。而这些如果都不可以的话呢,那就可以考虑自己去给应用加上一个自主修复的能力,如果App启动多次的话,那就可以考虑清空所有的缓存数据,将App重置到安装的状态,到了最严重的等级呢,可以阻塞主线程,此时一定要等App热修复成功之后才允许用户进入。
    
    隐式启动,利用URI,和上面的action类似,只是这里由action转成了uri 
    步骤一:首先需要定义符合URI通信的协议,这里很简单:hello://test.uri.activity?action=123&secret=buder
    (1)scheme协议:hello
    (2)host路由地址:test.uri.activity
    (3)?query参数:query参数可以有多个,是键值对的表示方式,键值对之间用&连接。本例中key=action,value=123
    步骤二:协议定义好后,需要在intent中添加上action字段,这里我们还是自定义self_define_uri作为action字段
    /**
    * 方式三:URI跳转
    */
    String uriString = "hello://test.uri.activity?action=123&secret=buder";
    Uri uri = Uri.parse(uriString);
    Intent intent = new Intent("self_define_uri");
    //Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(uri);
    startActivity(intent);
    
    public static Uri getRouteUri(Action action){
          try {
              Uri.Builder builder=new Uri.Builder();
              builder.scheme(action.scheme);
              builder.authority(action.host);
              builder.path(action.path);
              Map<String, String> query=action.query;
              if(query!=null&&!query.isEmpty()){
                  for (Map.Entry<String, String> entry:query.entrySet()){
                      builder.appendQueryParameter(entry.getKey(), entry.getValue());
                  }
              }
              return builder.build();
          } catch (Exception e) {
              Log.e(TAG, "getRouteUri: build route uri error, action="+action, e);
              return null;
          }
      }
    

    相关文章

      网友评论

          本文标题:如果发生了异常情况,怎么快速止损?

          本文链接:https://www.haomeiwen.com/subject/dfuwmdtx.html