记录恢复活动的原因

时间:2016-08-11 17:13:18

标签: android android-activity activity-lifecycle

有没有办法知道是否因为“后退按钮”而调用了活动的onresume,或者因为intire应用程序是在后台调用了吗? 我必须记录这些不同的动作:/ 这是场景: 我有4个活动A-B-C-D;我需要记录活动之间的导航,我不想记录应用程序从后台唤醒导致的onresume:)

3 个答案:

答案 0 :(得分:1)

从活动A开始,当您开始活动B / C / D时,使用和标识符并开始活动以获得结果。

例如:

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

在您的活动B中,您可以覆盖onBackPressed

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

支持活动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和变量不是必需的,因为你已经知道你得到了什么样的活动,但是,我想你可能想要在这个回报中传递一些数据,所以我离开了。

修改图片举例说明了ActivityForResult

Imagem

答案 1 :(得分:1)

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

恢复Activity时,会调用onResume()。在onResume中检查全局static变量是否包含此Activity的名称。如果是,则可以省略日志,因为此Activity只是暂停/恢复。

答案 2 :(得分:0)

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

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

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