确定 onPause() 是由用户导航触发的还是由我的 activity 启动另一个导航触发的

Determine whether onPause() was fired by user navigation or by my activity launching another one

我如何确定 onPause() 被解雇是因为我的 activity 启动了一个新的(例如照片选择器意图)还是因为用户离开了我的 activity(例如按主页)?

一个简单的解决方案是在 Activity 中有一个具有一些固定值的 state 变量:

final static int RUNNING = 0;
final static int CALLED_SOMETHING = 1;

int state = RUNNING:

然后,每当您启动 activity:

state = CALLED_SOMETHING;

当它 returns:

state = RUNNING;

在你的onPause()中:

switch(state) {
     case RUNNING:
         // Do the stuff if Home etc were pressed
         break;
     case CALLED_SOMETHING:
         // Do the other stuff
         break;
     }

显然,您可以将其扩展到更多场景。您可能还希望抓住 onBackPressed() 以确保您尽可能多地了解情况。