最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android控制界面刷新技巧匯總

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

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

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

先來看一下效果圖:

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

就比如一個(gè)列表界面,我在詳情頁進(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è)界面的簡單代碼:

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è)簡單的整理介紹。

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

相關(guān)文章

  • Android Flutter實(shí)現(xiàn)GIF動(dòng)畫效果的方法詳解

    Android Flutter實(shí)現(xiàn)GIF動(dòng)畫效果的方法詳解

    如果我們想對某個(gè)組件實(shí)現(xiàn)一組動(dòng)效應(yīng)該怎么辦呢?本文將利用Android Flutter實(shí)現(xiàn)GIF動(dòng)畫效果,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-06-06
  • Android編程之判斷SD卡狀態(tài)的方法

    Android編程之判斷SD卡狀態(tài)的方法

    這篇文章主要介紹了Android編程之判斷SD卡狀態(tài)的方法,結(jié)合實(shí)例分析了Android針對SD卡的權(quán)限操作及狀態(tài)判定技巧,需要的朋友可以參考下
    2016-02-02
  • Bitmap引起的OOM問題

    Bitmap引起的OOM問題

    這篇文章主要介紹了Bitmap引起的OOM問題,為什么會(huì)引起,以及避免引起的方法,文中有詳細(xì)的代碼示例,有需要的朋友可以參考下
    2023-04-04
  • Intellij IDEA + Android SDK + Genymotion Emulator打造最佳Android開發(fā)環(huán)境

    Intellij IDEA + Android SDK + Genymotion Emulator打造最佳Android

    本文介紹Lorinnn在開發(fā)Android過程不斷跌打滾爬中安裝的一套開發(fā)環(huán)境,相信你在使用后同樣有不錯(cuò)的體會(huì)。
    2014-07-07
  • Android實(shí)現(xiàn)九宮格圖案解鎖

    Android實(shí)現(xiàn)九宮格圖案解鎖

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)九宮格圖案解鎖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android使用ListView批量刪除item的方法

    Android使用ListView批量刪除item的方法

    這篇文章主要介紹了Android使用ListView批量刪除item的方法,實(shí)例分析了Android中ListView控件的相關(guān)操作技巧,需要的朋友可以參考下
    2016-07-07
  • Android使用Sqlite存儲(chǔ)數(shù)據(jù)用法示例

    Android使用Sqlite存儲(chǔ)數(shù)據(jù)用法示例

    這篇文章主要介紹了Android使用Sqlite存儲(chǔ)數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了Android操作SQLite數(shù)據(jù)庫的相關(guān)步驟與操作技巧,需要的朋友可以參考下
    2016-11-11
  • Android 6.0調(diào)用相機(jī)圖冊崩潰的完美解決方案

    Android 6.0調(diào)用相機(jī)圖冊崩潰的完美解決方案

    這篇文章主要介紹了Android 6.0調(diào)用相機(jī)圖冊崩潰的完美解決方案,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • Android 調(diào)用設(shè)備已有的相機(jī)應(yīng)用詳情

    Android 調(diào)用設(shè)備已有的相機(jī)應(yīng)用詳情

    這篇文章主要介紹了Android 調(diào)用設(shè)備已有的相機(jī)應(yīng)用,如果我們只是需要讓用戶能夠拍攝照片,則可以直接請求已有相機(jī)應(yīng)用拍攝照片并將照片返回給我們,下面我們一起來看看這些功能,需要的朋友可以參考一下
    2021-10-10
  • Android Studio實(shí)現(xiàn)標(biāo)題欄和狀態(tài)欄的隱藏

    Android Studio實(shí)現(xiàn)標(biāo)題欄和狀態(tài)欄的隱藏

    這篇文章主要介紹了Android Studio實(shí)現(xiàn)標(biāo)題欄和狀態(tài)欄的隱藏功能,在文中給大家補(bǔ)充介紹了android studio 去掉標(biāo)題欄狀態(tài)欄的完整代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-11-11

最新評論

樟树市| 弥勒县| 三门峡市| 清新县| 广昌县| 瑞安市| 大连市| 庆元县| 华池县| 无锡市| 务川| 尖扎县| 滨州市| 锦屏县| 论坛| 镇坪县| 大余县| 墨脱县| 渝北区| 乌拉特中旗| 平原县| 常熟市| 中西区| 濮阳县| 泽州县| 沙坪坝区| 孝感市| 富阳市| 西藏| 察哈| 合山市| 平舆县| 肥城市| 子洲县| 乃东县| 孝昌县| 迁西县| 周口市| 西畴县| 祁门县| 蓬溪县|