Android 检查mainActivity是否从其他活动调用

Android 检查mainActivity是否从其他活动调用,android,android-intent,android-activity,bundle,Android,Android Intent,Android Activity,Bundle,在我的应用程序中,我从MainActivity转到TrackingActivity,然后再回到MainActivity。在最后一步中,我使用了一些putExtra。这是我返回main活动的代码: public void goToHomeWithData(){ Intent intent = new Intent(this, MainActivity.class); intent.putExtra("avgSpeed", avgSpeed); int

在我的应用程序中,我从
MainActivity
转到
TrackingActivity
,然后再回到
MainActivity
。在最后一步中,我使用了一些putExtra。这是我返回
main活动的代码

public void goToHomeWithData(){
        Intent intent = new Intent(this, MainActivity.class);
        intent.putExtra("avgSpeed", avgSpeed);
        intent.putExtra("totalDistance", totalDistance);
        intent.putExtra("altitude", altitude);
        intent.putExtra("totalTime", totalTime);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent);
    }
main活动的
onResume()
方法中
我想用如下方式检索此数据:

String totalTime = getIntent().getExtras().getString("totalTime");
Double totalDistance = getIntent().getExtras().getDouble("totalDistance");
Double avgSpeed = getIntent().getExtras().getDouble("avgSpeed");
Double altitude = getIntent().getExtras().getDouble("altitude");
但由于启动应用程序时也会调用
onResume()
,因此应用程序会在
getIntent().getExtras().getString(“totalTime”)上崩溃部分,因为没有调用
main活动的意图

我要查找的是检查
getIntent
s,看看
main活动是否从
TrackingActivity
调用


提前谢谢。

您应该查看
startActivityForResult

在活动1中

protected void launchSecondActivity() {
        // TODO Auto-generated method stub
        Intent i = new Intent(this,SecondActivity.class);

        startActivityForResult(i, 0);

    }
在第二个活动中,使用setResult,而不是启动第一个活动的新实例

 public void goToHomeWithData(){
        Intent intent = new Intent();
        intent.putExtra("avgSpeed", avgSpeed);
        intent.putExtra("totalDistance", totalDistance);
        intent.putExtra("altitude", altitude);
        intent.putExtra("totalTime", totalTime);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        setResult(RESULT_OK,intent);
        finish();
    }
然后在您的第一个活动中,您可以像这样聆听结果:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK && data!=null) {

            if (data.getExtras().containsKey("SOMETAG") {
                theExtraYouCareAbout = data.getStringExtra("SOMETAG");

            }
}

注意:这是伪代码,但应该让您选择正确的路径

这是否可能,而不调用
goToHomeWithData
中的
finish()
?如果可能的话,我想让活动保持打开状态。您可以去掉finish(),改为使用onBackPressed()(假设在onBackPressed()中不调用finish())…现在,重要的是要理解,在没有完成的情况下将活动发送到后台,并不能确保它不会在垃圾收集期间被操作系统杀死或丢失状态。请确保捆绑您的savedInstance状态为什么需要保持它运行?因为整个应用程序只是两个活动:一个打开的webview一个是谷歌地图,另一个是谷歌地图。这应该不会太难处理,它会保存我的谷歌地图数据,包括多段线和其他数据。onBackPressed()的意思是“当按下后退按钮时”?我可以在代码中调用它吗?是的,这是一个公共方法,只需说“onBackPressed()