为什么要通过 Application class 管理生命周期?
Why manage lifecycle through Application class?
我正在审查聊天演示应用程序的代码,我注意到他们创建了一个 class 扩展应用程序,并且在 onCreate() 内部是以下行
registerActivityLifecycleCallbacks(new ActivityLifecycleHandler());
然后我查看了 ActivityLifecycleHandler class 并且有像
这样的方法
public void onActivityDestroyed(Activity activity) {
}
public void onActivityPaused(Activity activity) {
}
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
public void onActivityStarted(Activity activity) {
}
然后在所有 Activity class 文件中,在 onPause() 中——也在 onStart()、onResume() 等中——例如来自应用程序的生命周期 class 将被引用。
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Application.activityPaused();
}
我想知道这是什么以及它有什么作用?这是否意味着 onPause() 用于 Activity 而 Application.acitvityPaused() 用于整个应用程序?他们这样做有什么好处吗?我不明白这是什么意思。提前致谢。
我不知道,但刚用谷歌搜索了一下。检查来源。
你可以看到这只是调用你的回调方法,没有进一步的处理。评论还表明它的设计用途是处理状态持久性。
因此,您可以通过创建一个 Activity 基础 class 来实现相同的目的,该基础 class 提供 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();
...
}
}
所有活动都会调用这些方法,无论它们是否扩展了基础 class。因此,这个 class 生命周期将自动进行这些回调,而您无需执行任何其他操作。请注意,它仅扩展 Activity
,而不扩展 BaseActivity
。
public class Activity3 extends Activity{
@override
public void onCreate(){
super.onCreate();
...
}
}
由于您不能在 Java 中进行多重继承,如果 activity 需要为所有活动扩展基础 class 以外的东西,您将不得不开始链接回调很快就会变得凌乱。
最后,由于 ActivityLifecycleCallbacks
是一个接口,并且您可以注册该接口的多个实现,因此您可以使用一组回调来管理应用程序状态,另一组用于管理用户状态,也许还有一组用于管理服务或资源处理等,而无需在单个回调方法中混合该代码。
我正在审查聊天演示应用程序的代码,我注意到他们创建了一个 class 扩展应用程序,并且在 onCreate() 内部是以下行
registerActivityLifecycleCallbacks(new ActivityLifecycleHandler());
然后我查看了 ActivityLifecycleHandler class 并且有像
这样的方法public void onActivityDestroyed(Activity activity) {
}
public void onActivityPaused(Activity activity) {
}
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
public void onActivityStarted(Activity activity) {
}
然后在所有 Activity class 文件中,在 onPause() 中——也在 onStart()、onResume() 等中——例如来自应用程序的生命周期 class 将被引用。
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Application.activityPaused();
}
我想知道这是什么以及它有什么作用?这是否意味着 onPause() 用于 Activity 而 Application.acitvityPaused() 用于整个应用程序?他们这样做有什么好处吗?我不明白这是什么意思。提前致谢。
我不知道,但刚用谷歌搜索了一下。检查来源。
你可以看到这只是调用你的回调方法,没有进一步的处理。评论还表明它的设计用途是处理状态持久性。
因此,您可以通过创建一个 Activity 基础 class 来实现相同的目的,该基础 class 提供 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();
...
}
}
所有活动都会调用这些方法,无论它们是否扩展了基础 class。因此,这个 class 生命周期将自动进行这些回调,而您无需执行任何其他操作。请注意,它仅扩展 Activity
,而不扩展 BaseActivity
。
public class Activity3 extends Activity{
@override
public void onCreate(){
super.onCreate();
...
}
}
由于您不能在 Java 中进行多重继承,如果 activity 需要为所有活动扩展基础 class 以外的东西,您将不得不开始链接回调很快就会变得凌乱。
最后,由于 ActivityLifecycleCallbacks
是一个接口,并且您可以注册该接口的多个实现,因此您可以使用一组回调来管理应用程序状态,另一组用于管理用户状态,也许还有一组用于管理服务或资源处理等,而无需在单个回调方法中混合该代码。