Han*_*nry 5 android navigation-drawer
我想记录从不同的入口点恢复/创建的应用程序状态.
我知道它可以通过生成基本活动和覆盖简历/暂停事件来跟踪,但我在应用程序中存在大量活动.那么有什么简短的方法可以获得申请状态吗?
我考虑过创建一个服务并不断检查当前正在运行的任务,但是只有当我的活动处于可见状态时才找到运行服务的方法,我才能使用这种方法.(为了在每个活动中绑定服务对我来说不实用)
您建议的解决方案对我来说听起来不错:
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...
}
}
Run Code Online (Sandbox Code Playgroud)
让您的所有活动扩展此活动,而不是“活动应该为您工作”
编辑 另一种方法:
创建您自己的应用程序类并实现 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) {
}
}
Run Code Online (Sandbox Code Playgroud)
并在清单中引用此类:
<application
...
android:name="com.example.testing.ApplicationTest" >
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |