中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

wordpress多用戶后臺windows10優(yōu)化大師

wordpress多用戶后臺,windows10優(yōu)化大師,廣西做網站公司排名,有做銷售產品的網站有哪些1.ViewModel 解決問題: 瞬態(tài)數據丟失異步調用內存泄漏類膨脹提高維護難度和測試難度 作用: 介于View視圖和Model數據模型之間橋梁使視圖和數據能夠分離,也能保持通信 public class MainActivity extends AppCompatActivity {private Tex…

1.ViewModel

解決問題:

  • 瞬態(tài)數據丟失
  • 異步調用內存泄漏
  • 類膨脹提高維護難度和測試難度

作用:

  • 介于View視圖和Model數據模型之間橋梁
  • 使視圖和數據能夠分離,也能保持通信
public class MainActivity extends AppCompatActivity {private TextView textView;private  MyViewModel viewModel;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = findViewById(R.id.textView);viewModel = new ViewModelProvider(this, new ViewModelProvider.AndroidViewModelFactory()).get(MyViewModel.class);textView.setText(String.valueOf(viewModel.number));}public void plusNumber(View view) {textView.setText(String.valueOf(++viewModel.number));}
}
public class MyViewModel extends ViewModel {public int number;}

2.LiveData

LiveData是Android架構組件中的一部分,用于在數據源和UI之間建立連接,實現數據的實時更新和同步。它允許觀察者(例如Activity或Fragment)訂閱數據變化,并在數據發(fā)生變化時自動更新UI。

  • 基本概念:LiveData是一個可觀察的數據持有者類,它遵循觀察者模式。這意味著它可以持有數據,并且當數據發(fā)生變化時,它會通知所有已訂閱的觀察者。這在處理生命周期相關的數據時非常有用,因為它可以確保只有當活動或片段處于激活狀態(tài)時,才會接收到更新。
  • 工作原理:LiveData的核心是LifecycleOwner,通常是Activity或Fragment。當LiveData對象有新數據時,它會檢查是否有活躍的觀察者,并通知它們。如果觀察者已經銷毀,如Activity已經停止或Fragment已經分離,那么LiveData就不會再發(fā)送通知,從而避免了內存泄漏。
  • 使用步驟:要使用LiveData,首先需要在項目的build.gradle文件中添加依賴。然后,可以在ViewModel中創(chuàng)建LiveData對象,并在UI層(如Activity或Fragment)中觀察它。當LiveData對象的數據改變時,UI會自動更新。
  • 應用場景:LiveData適用于多種場景,包括但不限于配置更改、網絡狀態(tài)變化、數據庫操作等。它特別適用于需要響應配置更改(如屏幕旋轉)的場景,因為在這些情況下,觀察者可能會被銷毀并重新創(chuàng)建,而LiveData能夠確保在這些過程中不會發(fā)生內存泄漏。
  • 雙向綁定:雖然LiveData本身不直接支持雙向綁定,但可以與DataBinding庫結合使用,通過將LiveData對象與UI元素綁定來實現雙向綁定的效果。
  • 數據更新:當LiveData中的數據發(fā)生變化時,所有訂閱了該LiveData的觀察者都會收到通知,從而實現UI的自動更新。
  • 事件處理:LiveData還提供了Transformations API,允許開發(fā)者對LiveData對象進行轉換和組合,以實現更復雜的數據處理邏輯。
  • 高級功能:除了基本的數據持有和通知功能外,LiveData還提供了一些高級功能,如切換地圖類型、設置篩選條件等,這些功能使得LiveData更加靈活和強大。
public class MyViewModel extends ViewModel {private MutableLiveData<Integer> currentSecond;public MutableLiveData<Integer> getCurrentSecond(){if (currentSecond == null){currentSecond = new MutableLiveData<>();currentSecond.setValue(0);}return currentSecond;}
}
public class MainActivity extends AppCompatActivity {private TextView textView;private MyViewModel viewModel;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = findViewById(R.id.textView);viewModel = new ViewModelProvider(this, new ViewModelProvider.AndroidViewModelFactory()).get(MyViewModel.class);textView.setText(String.valueOf(viewModel.getCurrentSecond()));viewModel.getCurrentSecond().observe(this, new Observer<Integer>() {@Overridepublic void onChanged(Integer integer) {textView.setText(String.valueOf(integer));}});startTimer();}private void startTimer(){new Timer().schedule(new TimerTask() {@Overridepublic void run() {// 非ui線程 postValue// ui線程 setValueviewModel.getCurrentSecond().postValue(viewModel.getCurrentSecond().getValue()+1);}},1000,1000);}
}

3.DataBinding

Android DataBinding是Google在Jetpack中推出的一款數據綁定的支持庫,它通過將數據源直接與UI元素進行綁定來實現數據與視圖之間的自動更新。
對DataBinding的詳細介紹:

  • 基本概念:DataBinding是一種強大的數據綁定技術,它能夠實現視圖和數據之間的自動更新。開發(fā)者可以將數據直接綁定到視圖上,從而簡化了視圖和數據之間的操作,提高了代碼的可讀性和可維護性。
  • 工作原理:DataBinding的工作原理主要依賴于數據綁定引擎和數據對象。數據綁定引擎負責管理數據和視圖之間的關系,當數據發(fā)生變化時,引擎會自動更新視圖。而數據對象則是數據的載體,它可以是任何對象,只要實現了相應的數據接口。
  • 使用步驟:啟用DataBinding需要在app module的build.gradle中添加相應代碼。布局文件需要更改為layout節(jié)點并引入data節(jié)點,同時創(chuàng)建好需要用到的Model。在Activity或Fragment中,用DataBindingUtil.setContentView(Activity activity, int layoutId)代替setContentView(int layoutId),同時初始化數據,并進行綁定。
  • 應用場景:列表展示、條件渲染、數據綁定布局、MVVM架構等都是DataBinding的應用場景。DataBinding與MVVM架構相結合,可以實現更好的代碼分離和組件化開發(fā)。
  • 雙向綁定:雙向綁定的效果是數據影響界面,界面變化也要使得數據發(fā)生變化。例如EditText輸入內容時,綁定的數據bean要跟著變化。
  • 數據更新:Databinding通過使用實現Observable的數據,當數據更新的時候,自動更新UI。監(jiān)聽對象變化更新。
  • 事件處理:事件處理包括方法引用和監(jiān)聽綁定兩種方式。
  • 高級功能:DataBinding支持在普通方法上添加@注解來添加自定義控件屬性。這提供了更大的靈活性,允許開發(fā)者根據需要定制控件的行為
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);Idol idol = new Idol("蔡徐坤", "五星");binding.setIdol(idol);}
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"><data><variablename="idol"type="com.zzzjian.databinding.Idol" /></data><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_begin="365dp" /><ImageViewandroid:id="@+id/imageView2"android:layout_width="300dip"android:layout_height="300dip"android:contentDescription="TODO"app:layout_constraintBottom_toTopOf="@+id/guideline"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"android:src="@drawable/ikun"app:layout_constraintTop_toTopOf="parent"tools:src="@tools:sample/avatars" /><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"tools:text="姓名"android:text="@{idol.name}"android:textSize="24sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline"app:layout_constraintVertical_bias="0.245" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"tools:text="五星"android:text="@{idol.star}"android:textSize="24sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline" /></androidx.constraintlayout.widget.ConstraintLayout>
</layout>
http://www.risenshineclean.com/news/38461.html

相關文章:

  • 原來做網站后來跑國外了教育機構排名
  • wordpress站點版權設置大數據比較好的培訓機構
  • 百度站長平臺申請?zhí)峤绘溄雍蟬eo服務
  • 柳州疫情最新通知seo經典案例
  • 電子商務營銷模式有哪些長沙網站seo推廣公司
  • 青浦手機網站建設網站推廣排名公司
  • php網站后臺模板推廣app最快的方法
  • 貴陽 網站建設網絡營銷主要內容
  • 做旅行網站的依據及意義國內十大搜索引擎網站
  • 福州專業(yè)網站建設友鏈交易網
  • app小程序開發(fā)價格網站優(yōu)化方式有哪些
  • 無錫網站建設制作方案網頁設計制作網站html代碼大全
  • 特效網站大全seo秘籍優(yōu)化課程
  • 哪家做網站便宜營銷型網站建站推廣
  • 網站開發(fā)數據庫課程設計專注于網站營銷服務
  • 做模擬人生類的游戲下載網站廣告開戶南京seo
  • 調查問卷在哪個網站做子域名在線查詢
  • 志勛網站建設公司中國十大外貿平臺
  • 建企業(yè)網站怎么做網站自然排名工具
  • 有域名怎樣做網站軟文網站發(fā)布平臺
  • 9元包郵網站怎么做seo搜索引擎優(yōu)化是什么
  • 網站域名建設費進什么科目人工智能培訓心得體會
  • 有域名了怎么做網站百度推廣優(yōu)化公司
  • 新手做網站視頻講解大地seo視頻
  • 騰訊 網站開發(fā)如何在百度推廣自己的產品
  • 做網站運營需要培訓嗎在線搭建網站
  • 濰坊做網站的電話seo網站有優(yōu)化培訓班嗎
  • 備案平臺新增網站優(yōu)秀的軟文廣告欣賞
  • h5互動網站建設今日百度小說排行榜
  • 易語言可以建設網站嗎新站seo優(yōu)化快速上排名