iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android控制界面刷新技巧汇总
  • 905
分享到

Android控制界面刷新技巧汇总

界面技巧Android 2022-06-06 01:06:20 905人浏览 独家记忆
摘要

今天整理一下在项目中怎么去控制我们的数据刷新。 不需要广播、事件总线,就能全局性的控制想要刷新的界面。 先来看一下效果图: 近期在写项目的过程中,感觉很多界面中的状态

今天整理一下在项目中怎么去控制我们的数据刷新。

不需要广播、事件总线,就能全局性的控制想要刷新的界面。

先来看一下效果图:

近期在写项目的过程中,感觉很多界面中的状态,如果在详情页或者其他地方改变之后,需要进行同步的话,控制起来还是比较麻烦的。

就比如一个列表界面,我在详情页进行操作之后,回来之后列表状态需要改变,如果我没操作,回来之后是不需要改变,一般写法要么是考虑 startActivityForResult(), 要么就是每次界面重现(onResume方法)的时候,去操作当前列表,startActivityForResult 这个还可以接受,每次界面重现都去刷新当前列表,这个做法就有点不明智了。 但是 用 startActivityForResult 有时候也不是很方便,比如我界面层次多了呢,到第五层去刷新第一层界面。这个时候就要考虑其他方式了。

这里介绍的控制界面小技巧,就是 定义一个全局的静态类,用来存放各个界面的各种判断条件,然后利用生命周期的 OnResume 方法去进行条件判断。

下面先贴出来 Demo 中的这个静态类的代码:


public class MemoryUtil {
  
  public boolean isRefreshMain = false;
  
  public boolean isRefreshSecond = false;
  
  public boolean isRefreshThree = false;
  private static MemoryUtil mMS;
  public static MemoryUtil MS = MemoryUtil.getIntance();
  private static MemoryUtil getIntance() {
    if (mMS == null) mMS = new MemoryUtil();
    return mMS;
  }
  
  public static void clearMomery() {
    mMS = null;
  }
}

贴出来这几个界面的简单代码:

MainActivity :


 private TextView tv_1;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    tv_1 = (TextView) findViewById(R.id.tv_1);
  }
  public void onClick(View view) {
    Intent intent = new Intent(this, SecondActivity.class);
    startActivity(intent);
  }
  @Override
  protected void onResume() {
    super.onResume();
    if (MemoryUtil.MS.isRefreshMain) {
      MemoryUtil.MS.isRefreshMain = false;
      Toast.makeText(this, "Main is Refresh", Toast.LENGTH_SHORT).show();
    }
  }

SecondActivity:


 @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    findViewById(R.id.tv_2).setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Intent intent = new Intent(SecondActivity.this, ThreeActivity.class);
        startActivity(intent);
      }
    });
  }
  public void onClick(View view) {
    MemoryUtil.MS.isRefreshMain = true;
  }
  @Override
  protected void onResume() {
    super.onResume();
    if (MemoryUtil.MS.isRefreshSecond) {
      MemoryUtil.MS.isRefreshSecond = false;
      Toast.makeText(this, "Second is Refresh", Toast.LENGTH_SHORT).show();
    }
  }

ThreeActivity:


@Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_three);
    findViewById(R.id.tv_1).setOnClickListener(this);
    findViewById(R.id.tv_2).setOnClickListener(this);
  }
  @Override
  public void onClick(View v) {
    switch (v.getId()) {
      case R.id.tv_1:
        MemoryUtil.MS.isRefreshMain = true;
        break;
      case R.id.tv_2:
        MemoryUtil.MS.isRefreshSecond = true;
        break;
    }
  }

这种写法用于控制全局判断条件还是挺方便的,不过有些利用到缓存数据,或者传递参数的地方,这个还是有一定的限制。其他的也是要视情况而定了。

注意要在退出应用的时候,调用 clearMomery()来释放内存。

各位也可以根据自己的项目需要或者自己的想法去进行调整,这里只是做一个简单的整理介绍。

您可能感兴趣的文章:Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置Android 实现界面刷新的几种方法Android中刷新界面的二种方法Android界面刷新的方法分享Android 模仿iPhone列表数据View刷新动画详解android中ListView数据刷新时的同步方法


--结束END--

本文标题: Android控制界面刷新技巧汇总

本文链接: https://www.lsjlt.com/news/21891.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作