国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android控制界面刷新技巧匯總

2019-10-23 18:33:22
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

先來(lái)看一下效果圖:

Android界面刷新,Android數(shù)據(jù)刷新,Android刷新

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

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

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

下面先貼出來(lái) 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;  }}

貼出來(lái)這幾個(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;    }  }

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

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

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

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


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開(kāi)發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 和龙市| 临沧市| 江西省| 鹿泉市| 图木舒克市| 定陶县| 南昌市| 长治县| 崇左市| 西充县| 宜君县| 民丰县| 周口市| 拉孜县| 益阳市| 金沙县| 天水市| 桂平市| 红桥区| 西藏| 乌拉特中旗| 日喀则市| 内丘县| 安吉县| 湾仔区| 方城县| 荥经县| 兴义市| 兴国县| 江门市| 樟树市| 双桥区| 凯里市| 曲水县| 自治县| 礼泉县| 绍兴市| 油尖旺区| 涿州市| 宿迁市| 崇信县|