我想记录从不同入口点恢复/创建应用程序时的状态。
应用程序已从应用程序抽屉中打开
应用程序已从通知中打开
从打开的应用程序打开应用程序(长按Home键)
应用程序从其他屏幕恢复
我知道可以通过生成基本活动和覆盖resume/pause事件来跟踪它,但应用程序中存在大量活动。那么有没有什么简单的方法可以得到应用的状态呢?
我考虑过创建一个服务并不断检查当前正在运行的任务,但只有当我的活动处于可见状态时,我才能使用这种方法来运行服务。(对于我来说,在每个活动中绑定服务并不实际)

最佳答案

我觉得你建议的解决方案不错:

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" >

08-18 06:48
查看更多