了解关于Android内存泄露等相关问题的处理方式
2018-02-11 11:49
423 查看
我们在开发过程中,不时会遇到一些内存泄露等问题,比如说,打开一个Activity,会findViewById到一些需要的控件来进行ADUS等操作。。
而当我们在结束一些Activity或Fragment之后,之前findViewById到的一些控件仍然存在于内存中,当执行到特定场景时,就会出现空指针等一些内存泄露问题,这时候,我们的LiveDataReactiveStreams就发挥作用的时刻到啦,相关参考资料可以自行上网查询,我这里只粘贴部分资料作了解:
参考资料
谷歌原文
Adapts
LiveData<List<RecommendData>> liveData = LiveDataReactiveStreams.fromPublisher(RetrofitUtil.create(StatisticsApi.class, UrlConstants.getUrlConfig().getUrl() + lotteryType + "/")
.getRecommendData(new RequestContent.Builder<List<RecommendData>>().build())
.compose(new HttpResultFlowableTransformer<>()));
liveData.observe(this, new Observer<List<RecommendData>>() {
@Override
public void onChanged(@Nullable List<RecommendData> recommendDataList) {
getRecommenData(recommendDataList);
}
});用于更新数据,我们就无需再管内存会不会泄露,view等控件的回收问题啦。
而当我们在结束一些Activity或Fragment之后,之前findViewById到的一些控件仍然存在于内存中,当执行到特定场景时,就会出现空指针等一些内存泄露问题,这时候,我们的LiveDataReactiveStreams就发挥作用的时刻到啦,相关参考资料可以自行上网查询,我这里只粘贴部分资料作了解:
参考资料
RxJava and Lifecycles
RxJava is cool, albeit confusing. But beyond that, it is a pure Java library. RxJava knows nothing about Android-specific concepts, as it is designed to be used on all sorts of Java projects.Android developers using RxJava invariably also add RxAndroid, which gives us access to aSchedulerthat knows about the Android main application thread. However, RxAndroid does not have anything that deals with activity or fragment lifecycles, leaving that up to you. With Android lifecycles, we want to create things as activities and fragments start up and clean up those things as the activities and fragments go away. In the case of RxJava, if we subscribe to some
Observable, it would be nice to get rid of that subscription at an appropriate point.In this chapter, we will explore a few options — including one from the Architecture Components — for dealing with lifecycles with RxJava.
谷歌原文
LiveDataReactiveStreams
public final class LiveDataReactiveStreams
extends Object
java.lang.Object | |
↳ | android.arch.lifecycle.LiveDataReactiveStreams |
LiveDatainput and output to the ReactiveStreams spec.具体使用可以按如下写法:
LiveData<List<RecommendData>> liveData = LiveDataReactiveStreams.fromPublisher(RetrofitUtil.create(StatisticsApi.class, UrlConstants.getUrlConfig().getUrl() + lotteryType + "/")
.getRecommendData(new RequestContent.Builder<List<RecommendData>>().build())
.compose(new HttpResultFlowableTransformer<>()));
liveData.observe(this, new Observer<List<RecommendData>>() {
@Override
public void onChanged(@Nullable List<RecommendData> recommendDataList) {
getRecommenData(recommendDataList);
}
});用于更新数据,我们就无需再管内存会不会泄露,view等控件的回收问题啦。
相关文章推荐
- 关于Android23 及以上模拟器处理应用闪退的一些问题(权限相关)
- 关于android中使用new Message的内存泄露问题
- Android 关于内存泄露,你必须了解的东西
- 关于Android内存泄露问题
- [Android] 关于WebView的内存泄露问题
- [Android] 关于WebView的内存泄露问题
- 关于Android内存泄露问题
- 关于android内存泄露的问题
- Unity3D关于内存优化,内存泄露、多线程、引用C++的dll的问题研究
- android内存泄露的问题
- 关于C++检测内存泄露相关知识(Windows程序调试)
- 关于android中多线程相关遇到的问题总结
- 关于c++检测内存泄露相关知识(windows程序调试)
- 关于修改JBoss Portal源代码时出现的相关问题和解决方式
- 编写android加载图片的程序时,遇到了内存泄露问题!
- 关于在android手机的sd卡上创建目录遇到的相关问题
- 关于android创建快捷方式会启动两个应用的问题(二)
- 关于Android Application 内存溢出问题的总结
- android相关命令及问题处理
- 关于hashcode修改导致内存泄露的问题