记录 activity 恢复的原因

Log the why of the activity is resumed

有没有办法知道 activity 的 onresume 是因为 "back button" 还是因为整个应用程序在后台而被调用? 我必须记录这个不同的动作:/ 这是场景: 我有 4 activity A-B-C-D ;我需要记录 activity 之间的导航,我不想记录由应用程序从后台唤醒引起的 onresume:)

例如,您可以覆盖 onBackPressed() 回调

@Override
public void onBackPressed() {
    super.onBackPressed();
    /* add your log here */
}

收集来自 onResume() 的日志加上来自 onBackPressed() 的日志(如果有)然后您可以检测各种情况。

从Activity A开始,当你将开始Activity B/C/D时,使用和标识符并开始activity作为结果。

例如:

int ActivityBID = 1;
Intent i = new Intent(this,  ActivityB.class);
startActivityForResult(i, ActivityBID );

在你的 Activity B 中你覆盖了 onBackPressed:

@Override
public void onBackPressed() {
   Intent intent = new Intent();
   intent.putExtra("activity","B")
   setResult(RESULT_OK, intent);        
   finish();
}

并支持 Activity A:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == ActivityBID ) {
         if(resultCode == RESULT_OK){
             String stredittext=data.getStringExtra("activity");
         }     
    }
} 

注意:内部 if 和变量不是必需的,因为你已经知道你的结果来自什么 activity,但是,我想你可能想在这个 return 中传递一些数据, 那我就走了

编辑 图片举例ActivityForResult

暂停 Activity 时,会调用 onPause()。在 onPause() 中,将正在暂停的 Activity 的名称写入全局 static 变量。

恢复 Activity 时,将调用 onResume()。在 onResume 中检查全局 static 变量是否包含此 Activity 的名称。如果是,您可以省略日志,因为这个 Activity 只是 paused/resumed.