记录 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.
有没有办法知道 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.