- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在审查聊天演示应用程序的代码,我注意到他们创建了一个扩展应用程序的类,并且在 onCreate() 中有以下行
registerActivityLifecycleCallbacks(new ActivityLifecycleHandler());
然后我查看了 ActivityLifecycleHandler 类,有类似
的方法public void onActivityDestroyed(Activity activity) {
}
public void onActivityPaused(Activity activity) {
}
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
public void onActivityStarted(Activity activity) {
}
然后在所有 Activity 类文件中,在 onPause() 中——也在 onStart()、onResume() 等中——例如,将引用 Application 类的生命周期。
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Application.activityPaused();
}
我想知道这是什么以及它的作用?这是否意味着 onPause() 用于 Activity 而 Application.acitvityPaused() 用于整个应用程序?他们这样做有什么好处吗?我不明白这是什么意思。提前致谢。
最佳答案
我不知道,但刚刚用 Google 搜索了一下。检查来源。
你可以看到这只是调用你的回调方法,没有进一步的处理。评论还表明它的设计用途是处理状态持久性。
因此,您可以通过创建一个 Activity 基类来实现相同的目的,该基类提供对 Activity 回调的覆盖,然后从中扩展您的所有 Activity 。
public class BaseActivity extends Activity{
@override
public void onCreate(){
super.onCreate(); // calls the framework method
}
}
public class Activity1 extends BaseActivity{
@override
public void onCreate(){
super.onCreate(); // calls the base method which in turn calls the framework method
...
}
}
public class Activity2 extends BaseActivity{
@override
public void onCreate(){
super.onCreate();
...
}
}
所有 Activity 都会调用这些方法,无论它们是否扩展基类。所以这个类的生命周期将自动进行这些回调,而无需您做更多的事情。请注意,它仅扩展 Activity
,而不扩展 BaseActivity
。
public class Activity3 extends Activity{
@override
public void onCreate(){
super.onCreate();
...
}
}
由于在 Java 中不能有多重继承,如果一个 Activity 需要扩展除所有 Activity 的基类之外的东西,您将不得不开始链接回调,这可能很快就会变得困惑。
最后,由于 ActivityLifecycleCallbacks
是一个接口(interface),并且由于您可以注册该接口(interface)的多个实现,因此您可以使用一组回调来管理应用程序状态,另一组用于管理用户状态,也许还有一个用于管理服务或资源处理等,而无需在单个回调方法中混合该代码。
关于android - 为什么要通过 Application 类来管理生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27865016/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!