adr*_*aes 12 lifecycle android android-activity
注意:在执行任何工作之前,您对这些生命周期方法的实现必须始终调用超类实现...
但我已经看到过代码放在超类方法之后的情况,特别是对于像onPause(),onStop(),onDestroy()这样的方法,例如:
@Override
protected void onPause() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
super.onPause();
}
Run Code Online (Sandbox Code Playgroud)
它在两种方式都有效.那么,在调用超类方法之后将代码置于o之前有什么区别?什么是正确的方法?
sti*_*ike 19
直接从CommonsWare的这个答案复制.所以最好给他一个upvote
那些组件创建(的一部分方法重写
onCreate(),onStart(),onResume()等),你应该链超作为第一个发言,以确保Android有它的机会来完成工作,你试图做一些事情,依靠这项工作之前,已经完成了.那些成分破坏(部分方法重写
onPause(),onStop(),onDestroy()等),你应该先和链做你的工作,以超作为最后一件事.这样,如果Android清理了您的工作所依赖的东西,您将首先完成您的工作.返回除
void(onCreateOptionsMenu()等)之外的其他东西的方法,有时你会链接到return语句中的超类,假设你没有专门做一些需要强制特定返回值的东西.其他一切 - 比如
onActivityResult()- 总体上取决于你.我倾向于链接到超类作为第一件事,但除非你遇到问题,以后链接应该没问题.
但是如果没有依赖性,那么在任何你想要的地方调用超类方法.
当我对这个问题感兴趣时,我发现了这条规则:
during any kind of initialization, let the super class do their work first;
during any kind of finalization, you do your work first
Run Code Online (Sandbox Code Playgroud)
这是合乎逻辑的)
| 归档时间: |
|
| 查看次数: |
2498 次 |
| 最近记录: |