我想记录从不同的入口点恢复/创建的应用程序状态。
我知道可以通过生成基本活动和覆盖简历/暂停事件来跟踪它,但我在应用程序中存在大量活动。那么有什么简短的方法可以获得申请状态吗?
我考虑过创建服务并不断检查当前正在运行的任务,但是只有在我的活动处于可见状态时才找到运行服务的方法时,我才能使用这种方法。 (对于我来说,绑定每个活动中的服务对我来说是不实际的)
答案 0 :(得分:1)
您建议的解决方案听起来不错:
public class YourBaseActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
ActivityManager mgr = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = mgr.getRunningTasks(1);
tasks.get(0).topActivity.getClassName();
//Do what you need to do with it...
}
}
让你的所有活动扩展这一活动而不是活动应该适合你
修改强> 另一种方法:
创建自己的应用程序类并实现Application.ActivityLifecycleCallbacks,这是代码的一个工作示例:
public class ApplicationTest extends Application implements Application.ActivityLifecycleCallbacks {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(this);
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
Log.d("testing", "onActivityResumed");
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
}
在你的清单中引用这个类:
<application
...
android:name="com.example.testing.ApplicationTest" >