Android控制界面刷新技巧汇总

 更新时间:2017年03月28日 09:24:48   作者:发强  
这篇文章主要为大家详细介绍了Android控制界面刷新的小技巧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

先来看一下效果图:

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

就比如一个列表界面,我在详情页进行操作之后,回来之后列表状态需要改变,如果我没操作,回来之后是不需要改变,一般写法要么是考虑 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()来释放内存。

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • RecyclerView+PagerSnapHelper实现抖音首页翻页的Viewpager效果

    RecyclerView+PagerSnapHelper实现抖音首页翻页的Viewpager效果

    这篇文章主要为大家详细介绍了RecyclerView+PagerSnapHelper实现抖音首页翻页的Viewpager效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • listview改变字体大小实例讲解

    listview改变字体大小实例讲解

    点击字体,字体变大在本教程中将使用listview实现,不会不懂的朋友可以参考下哈,希望对你有所帮助
    2013-05-05
  • 深入浅析 Android Fragment(上篇)

    深入浅析 Android Fragment(上篇)

    本篇文章为大家说明Fragment如何产生,什么是Fragment,Fragment生命周期,如何静态和动态的使用Fragment,Fragment回退栈,Fragment事务;以及Fragment的一些特殊用途。感兴趣的朋友一起跟着小编一起看看吧
    2015-10-10
  • 详解Android中解析XML的方法

    详解Android中解析XML的方法

    XML在各种开发中都广泛应用,Android也不例外。这篇文章主要介绍了详解Android中解析XML的方法,有需要的可以了解一下。
    2016-11-11
  • Android中AndroidStudio&Kotlin安装到运行过程及常见问题汇总

    Android中AndroidStudio&Kotlin安装到运行过程及常见问题汇总

    这篇文章主要介绍了Android(AndroidStudio&Kotlin)安装到运行过程及常见问题汇总,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Flutter EventBus事件总线的应用详解

    Flutter EventBus事件总线的应用详解

    这篇文章主要为大家介绍了Flutter EventBus事件总线的应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Android如何获取系统通知的开启状态详解

    Android如何获取系统通知的开启状态详解

    这篇文章主要给大家介绍了关于Android如何获取系统通知开启状态的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面跟着小编来一起看看吧啊。
    2017-08-08
  • Android滚轮选择时间控件使用详解

    Android滚轮选择时间控件使用详解

    这篇文章主要为大家详细介绍了Android滚轮选择时间控件使用,滚轮选择选择数值、选择字符串,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android四大组件之broadcast广播详解

    Android四大组件之broadcast广播详解

    Android开发的四大组件分别是:活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;广播接受者(Broadcast Receive),勇于接收广播;内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库,本篇着重介绍广播组件
    2022-10-10
  • Android中通知Notification的使用方法

    Android中通知Notification的使用方法

    这篇文章主要为大家详细介绍了Android中通知Notification的使用方法,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论