关于Android生命周期方法调用return的问题
16lz
2021-01-23
关于Android生命周期方法调用return的问题
问题描述
有三段代码,读者可以先想想会发生什么情况
@Overrideprotected void onResume(){ super.onResume(); return;}
@Overrideprotected void onResume(){ return; super.onResume();}
@Overrideprotected void onResume(){}
问题解析
第一种情况
这是正常的情况,调用完super.onResume方法后可以根据需求在生命周期方法适当的地方return。
第二种情况
首先这里会有两个错误,一个是不可达语句的我问题,这个在编译的时候就会报出来,删除return使super可达则可以安全运行。
第三种情况
在编译的时候会提示用户这个方法应该调用super.onResuem(),但是不影响编译,而运行时则会抛出异常android.util.SuperNotCalledException。
总结一下
有时候根据需求我们会在生命周期方法中使用return,如上所述,只要调用了super对应的方法如super.onStart(),super.onResume()且这些super方法可达,那么再使用return是没有影响的,程序可以正常运行。如
@Override protected void onStart(){ super.onStart(); if(imageView == null) return; } @Override protected void onResume(){ super.onResume(); }
onStart调用的return此时不会影响onResume的调用的,此时使用return时安全的
更多相关文章
- android颜色设使用方法
- android 点击返回键退出程序的方法
- Android studio+真机 运行报错[INSTALL_FAILED_INSUFFICIENT_STO
- Android——Android Studio开发环境搭建及设置本地Gradle方法
- 在android中创建bitmap避免内存不足的方法
- Android Studio使用Wifi调试的方法:使用Android WIFI ADB
- 【Android动态布局】之【使用addView方法时,如何保持已有动态控件
- Android禁止锁屏,保持常亮方法
- android:ClassNotFoundException for Activity class的解决方法