Android获取当前Activity是由哪个启动的

1. 总览

在Android开发中,有时候我们需要知道当前的Activity是由哪个Activity启动的,以便根据不同的启动来源进行不同的逻辑处理。本文将介绍如何获取当前Activity的启动来源。

2. 流程图

下面是获取当前Activity启动来源的整个流程图:

stateDiagram
    [*] --> 初始Activity
    初始Activity --> 启动目标Activity: 启动目标Activity
    启动目标Activity --> 初始Activity: 返回

3. 代码实现

3.1 初始Activity

首先,在初始Activity中我们需要启动目标Activity,并传递启动来源的信息。代码如下所示:

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 启动目标Activity并传递启动来源信息
        Intent intent = new Intent(this, TargetActivity.class);
        intent.putExtra("start_from", TAG);
        startActivity(intent);
    }
}

在上述代码中,我们通过IntentputExtra()方法将启动来源信息作为额外的数据传递给目标Activity,并使用startActivity()方法启动目标Activity。

3.2 目标Activity

接下来,在目标Activity中我们需要获取启动来源的信息,并进行相应的处理。代码如下所示:

public class TargetActivity extends AppCompatActivity {
    private static final String TAG = "TargetActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_target);

        // 获取启动来源信息
        String startFrom = getIntent().getStringExtra("start_from");
        Log.d(TAG, "Start from: " + startFrom);
    }
}

在上述代码中,我们通过getIntent()方法获取启动当前Activity的Intent,并使用getStringExtra()方法获取启动来源信息。然后,我们可以根据不同的启动来源进行相应的逻辑处理。

4. 类图

下面是本文所涉及的类图:

classDiagram
    class MainActivity {
        - TAG: String
        + onCreate()
    }

    class TargetActivity {
        - TAG: String
        + onCreate()
    }

    MainActivity <-- TargetActivity

5. 状态图

下面是获取当前Activity启动来源的状态图:

stateDiagram
    [*] --> MainActivity: onCreate()
    MainActivity --> TargetActivity: onCreate()

6. 总结

通过以上步骤,我们可以轻松地获取当前Activity是由哪个启动的。首先,在初始Activity中启动目标Activity时,传递启动来源信息。然后,在目标Activity中获取启动来源信息,并进行相应的处理。通过这种方式,我们可以根据不同的启动来源进行灵活的逻辑处理。希望本文对刚入行的小白有所帮助!