Android控制界面刷新技巧汇总

Android控制界面刷新技巧汇总,第1张

概述今天整理一下在项目中怎么去控制我们的数据刷新。不需要广播、事件总线,就能全局性的控制想要刷新的界面

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

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

先来看一下效果图:

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

就比如一个列表界面,我在详情页进行 *** 作之后,回来之后列表状态需要改变,如果我没 *** 作,回来之后是不需要改变,一般写法要么是考虑 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控制界面刷新技巧汇总全部内容,希望文章能够帮你解决Android控制界面刷新技巧汇总所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1146575.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存