欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android控制界面刷新技巧匯總

 更新時(shí)間:2017年03月28日 09:24:48   作者:發(fā)強(qiáng)  
這篇文章主要為大家詳細(xì)介紹了Android控制界面刷新的小技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

今天整理一下在項(xiàng)目中怎么去控制我們的數(shù)據(jù)刷新。

不需要廣播、事件總線,就能全局性的控制想要刷新的界面。

先來看一下效果圖:

近期在寫項(xiàng)目的過程中,感覺很多界面中的狀態(tài),如果在詳情頁(yè)或者其他地方改變之后,需要進(jìn)行同步的話,控制起來還是比較麻煩的。

就比如一個(gè)列表界面,我在詳情頁(yè)進(jìn)行操作之后,回來之后列表狀態(tài)需要改變,如果我沒操作,回來之后是不需要改變,一般寫法要么是考慮 startActivityForResult(), 要么就是每次界面重現(xiàn)(onResume方法)的時(shí)候,去操作當(dāng)前列表,startActivityForResult 這個(gè)還可以接受,每次界面重現(xiàn)都去刷新當(dāng)前列表,這個(gè)做法就有點(diǎn)不明智了。 但是 用 startActivityForResult 有時(shí)候也不是很方便,比如我界面層次多了呢,到第五層去刷新第一層界面。這個(gè)時(shí)候就要考慮其他方式了。

這里介紹的控制界面小技巧,就是 定義一個(gè)全局的靜態(tài)類,用來存放各個(gè)界面的各種判斷條件,然后利用生命周期的 OnResume 方法去進(jìn)行條件判斷。

下面先貼出來 Demo 中的這個(gè)靜態(tài)類的代碼:

public class MemoryUtil {

  /**
   * 是否刷新第一個(gè)界面
   */
  public boolean isRefreshMain = false;

  /**
   * 是否刷新第二個(gè)界面
   */
  public boolean isRefreshSecond = false;

  /**
   * 是否刷新第三個(gè)界面
   */
  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;
  }

  /**
   * 清理保存的內(nèi)存
   */
  public static void clearMomery() {
    mMS = null;
  }
}

貼出來這幾個(gè)界面的簡(jiǎn)單代碼:

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;
    }
  }

這種寫法用于控制全局判斷條件還是挺方便的,不過有些利用到緩存數(shù)據(jù),或者傳遞參數(shù)的地方,這個(gè)還是有一定的限制。其他的也是要視情況而定了。

注意要在退出應(yīng)用的時(shí)候,調(diào)用 clearMomery()來釋放內(nèi)存。

各位也可以根據(jù)自己的項(xiàng)目需要或者自己的想法去進(jìn)行調(diào)整,這里只是做一個(gè)簡(jiǎn)單的整理介紹。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • RecyclerView+PagerSnapHelper實(shí)現(xiàn)抖音首頁(yè)翻頁(yè)的Viewpager效果

    RecyclerView+PagerSnapHelper實(shí)現(xiàn)抖音首頁(yè)翻頁(yè)的Viewpager效果

    這篇文章主要為大家詳細(xì)介紹了RecyclerView+PagerSnapHelper實(shí)現(xiàn)抖音首頁(yè)翻頁(yè)的Viewpager效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • listview改變字體大小實(shí)例講解

    listview改變字體大小實(shí)例講解

    點(diǎn)擊字體,字體變大在本教程中將使用listview實(shí)現(xiàn),不會(huì)不懂的朋友可以參考下哈,希望對(duì)你有所幫助
    2013-05-05
  • 深入淺析 Android Fragment(上篇)

    深入淺析 Android Fragment(上篇)

    本篇文章為大家說明Fragment如何產(chǎn)生,什么是Fragment,F(xiàn)ragment生命周期,如何靜態(tài)和動(dòng)態(tài)的使用Fragment,F(xiàn)ragment回退棧,F(xiàn)ragment事務(wù);以及Fragment的一些特殊用途。感興趣的朋友一起跟著小編一起看看吧
    2015-10-10
  • 詳解Android中解析XML的方法

    詳解Android中解析XML的方法

    XML在各種開發(fā)中都廣泛應(yīng)用,Android也不例外。這篇文章主要介紹了詳解Android中解析XML的方法,有需要的可以了解一下。
    2016-11-11
  • Android中AndroidStudio&Kotlin安裝到運(yùn)行過程及常見問題匯總

    Android中AndroidStudio&Kotlin安裝到運(yùn)行過程及常見問題匯總

    這篇文章主要介紹了Android(AndroidStudio&Kotlin)安裝到運(yùn)行過程及常見問題匯總,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Flutter?EventBus事件總線的應(yīng)用詳解

    Flutter?EventBus事件總線的應(yīng)用詳解

    這篇文章主要為大家介紹了Flutter?EventBus事件總線的應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Android如何獲取系統(tǒng)通知的開啟狀態(tài)詳解

    Android如何獲取系統(tǒng)通知的開啟狀態(tài)詳解

    這篇文章主要給大家介紹了關(guān)于Android如何獲取系統(tǒng)通知開啟狀態(tài)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起看看吧啊。
    2017-08-08
  • Android滾輪選擇時(shí)間控件使用詳解

    Android滾輪選擇時(shí)間控件使用詳解

    這篇文章主要為大家詳細(xì)介紹了Android滾輪選擇時(shí)間控件使用,滾輪選擇選擇數(shù)值、選擇字符串,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Android四大組件之broadcast廣播詳解

    Android四大組件之broadcast廣播詳解

    Android開發(fā)的四大組件分別是:活動(dòng)(activity),用于表現(xiàn)功能;服務(wù)(service),后臺(tái)運(yùn)行服務(wù),不提供界面呈現(xiàn);廣播接受者(Broadcast Receive),勇于接收廣播;內(nèi)容提供者(Content Provider),支持多個(gè)應(yīng)用中存儲(chǔ)和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫(kù),本篇著重介紹廣播組件
    2022-10-10
  • Android中通知Notification的使用方法

    Android中通知Notification的使用方法

    這篇文章主要為大家詳細(xì)介紹了Android中通知Notification的使用方法,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評(píng)論