我正在开发我的第一款Android应用,想知道如何全局处理激活/停用/启动/停止,而不是在活动级别。
这篇精彩的文章显示了活动的状态转换: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
应用程序状态是否有类似内容?
例如,在iOS和Windows Phone应用程序中,有明确的应用程序状态与活动(视图,控制器等)分开。
我问,因为我想每个应用程序加载/退出时只执行一次某些操作而不是每个活动开始/停止
答案 0 :(得分:3)
答案是 Simply No Direct方法来执行此操作
而不是在Application Class中,您可以捕获这些事件
@Override
public void onLowMemory()
{
super.onLowMemory();
}
@Override
public void onTerminate()
{
super.onTerminate();
}
所以你必须在你将要进行的所有活动中处理它
以下方法
您必须在所有Activity中实现处理所有应用程序
您可以在Application类中使用一些Variable来保存应用程序状态
说创建一个像
这样的变量public static boolean isPaused;
并将其设置为状态更改中的所有活动
答案 1 :(得分:2)
您提出的问题适用于iOS和Windows,但不适用于Android。
虽然有一个Application类,但Android并没有真正将应用程序作为对象的概念。相反,应用程序是松散的活动集合。这种状况有很多充分的理由;例如,它支持快速应用程序切换以及不同应用程序的活动之间的轻松交互。协调“app”以便一个Activity不会尝试执行已经完成的操作的最佳方法是使用SharedPreferences来存储应用程序状态。几乎所有其他方式都不太受欢迎。即使系统终止了整个应用程序,SharedPreferences也会保持当前状态。 Application对象不会。
此外,Android基于暂停和恢复。创建,暂停和恢复一个或多个活动。他们可能会被摧毁,但这是一个极端的情况。这样做的必然结果是应用程序不应该有退出按钮;没有必要。我有时看到有一个应用程序,但他们真正想要做的是关闭后台服务或进程。最好的方法是使用“睡眠”或类似的可供性。
答案 2 :(得分:1)
让所有活动继承自相同的层次结构,并在OnCreate,OnPause,OnResume,OnStop,OnDestroy中放置您想要的任何内容,并在适用的地方调用super。
实施例
<强>父强>
IamTheParentActivity : Activity
protected void onCreate()
{
setApplicationState(ApplicationState.Running);
}
protected void onPause()
{
setApplicationState(ApplicationState.Paused);
}
private void setApplicationState(Enum ApplicationState)
{
//Some Application Level Variable
Application.State = ApplicationState
}
<强>儿童强>
IamTheChild : IamTheParentActivity
protected void override onCreate()
{
base.OnCreate;
do other stuff
}