網站首頁 編程語言 正文
ViewModel
官方解釋:保存UI數據的類,會在配置變更(如手機屏幕的旋轉)后繼續存在。
view Model不應持有context,否則在Activity銷毀后View Model仍然持有Activity的context,造成內存泄漏;可以繼承AndroidViewModel,或者選擇application context
liveData
1.建立data類
public class Time {
private MutableLiveData<Integer> seconds = new MutableLiveData<>();
public MutableLiveData<Integer> getSeconds() {
return seconds;
}
}
2.繼承View Model
public class TestViewModel extends ViewModel {
private Time time;
public TestViewModel(){
time = new Time();
// 修改liveData包裝的數據,主線程用setValue,其他線程PostValue
time.getSeconds().setValue(0);
}
public Time getLiveData(){
return time;
}
}
3.observe數據
private TestViewModel vm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vm = new TestViewModel();
vm.getLiveData().getSeconds().observe(this, new Observer<Integer>() {
@Override
public void onChanged(Integer integer) {
EditText ed = findViewById(R.id.ed);
ed.setText(""+integer);
}
});
viewBinding
1.build.gradle添加
buildFeatures {
? ? viewBinding true
}
根視圖和所有有ID的視圖都會根據xml文件名稱,生成對應的Binding類
2. 在Activity中使用view Binding
ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
View view = binding.getRoot();
setContentView(view);
如果找不到Binding類,可能是名字錯了,順序再調一下可能就對了
在Fragment中使用view Binding
@Override
public View onCreateView (LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
ActivityMainBinding binding = ResultProfileBinding.inflate(inflater, container, false);
View view = binding.getRoot();
return view;
}
由于fragment的生命周期更長,所以務必在destroy解除綁定
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
原文鏈接:https://blog.csdn.net/weixin_45369680/article/details/127693900
相關推薦
- 2022-06-22 Android實現歡迎滑動頁面_Android
- 2022-11-21 Android?Jetpack系列之App?Startup使用詳解_Android
- 2022-06-01 C語言線性表中順序表超詳細理解_C 語言
- 2022-07-21 CentOS 網絡設置修改
- 2022-12-07 C++?類this及返回自身對象的引用方式_C 語言
- 2022-06-27 Android音視頻開發之MediaCodec的使用教程_Android
- 2022-07-11 Python利用xlrd?與?xlwt?模塊操作?Excel_python
- 2022-02-19 .NET?與樹莓派WS28XX?燈帶的顏色漸變動畫效果的實現_實用技巧
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支