activity的oncreate里面start另一个activity

博客指出第一个Activity的oncreate和onresume都会执行,以第一个Activity为H、第二个为G。直接启动G可能导致黑屏,建议将启动G的操作放在Handler里执行。

第一个activity的oncreate和onresume都会走 H为第一个activity G为第二个。

最好不要这么做,可能会导致黑屏,建议start G的时候放到一个Handler里面去执行

HOncreate
HOnResume
HonPause
GOncreate
在 Android 开发中,从一个 `Activity` 跳转到一个 `Activity` 是一个基础且常见的操作。实现这一功能的核心方法是使用 `Intent` 来启动新的 `Activity`。 ### 基本跳转实现 要实现从当前 `Activity` 跳转到一个 `Activity`,可以通过以下步骤完成: 1. **定义按钮**:在布局文件(如 `activity_main.xml`)中定义一个按钮。 ```xml <Button android:id="@+id/btn_next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跳转到下一个页面" /> ``` 2. **设置点击事件**:在 Java 或 Kotlin 代码中为按钮设置点击监听器,并通过 `Intent` 启动目标 `Activity`。 ```java Button btnNext = findViewById(R.id.btn_next); btnNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } }); ``` 3. **新建目标 Activity**:创建一个新的 `Activity` 文件(如 `SecondActivity.java`),并确保它继承自 `AppCompatActivity` 或 `Activity` 类。 ```java public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } } ``` 4. **配置 AndroidManifest.xml**:确保目标 `Activity` 在 `AndroidManifest.xml` 中注册。 ```xml <activity android:name=".SecondActivity" /> ``` ### 跳转销毁前一个 Activity 如果需要在跳转后销毁当前的 `Activity`,可以在启动新 `Activity` 后调用 `finish()` 方法[^3]。 ```java Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); finish(); // 销毁当前 Activity ``` 此操作将把当前 `Activity` 从任务栈中移除,用户无法再通过返回键回到该页面。 ### 跳转到指定 Fragment 有可能需要直接跳转到某个 `Activity` 的特定 `Fragment`。这可以通过 `Intent` 传递参数来实现,在目标 `Activity` 中根据参数加载对应的 `Fragment`[^2]。 ```java Intent intent = new Intent(MainActivity.this, HomeActivity.class); intent.putExtra("fragment_flag", 2); // 设置跳转到第 2 个 Fragment startActivity(intent); ``` 在目标 `Activity` 中处理参数并加载对应 `Fragment`: ```java int fragmentFlag = getIntent().getIntExtra("fragment_flag", 0); if (fragmentFlag == 2) { getSupportFragmentManager().beginTransaction() .replace(R.id.fragment_container, new SecondFragment()) .commit(); } ``` ### 生命周期变化 当从一个 `Activity` 跳转到一个 `Activity` ,系统会按照特定顺序调用生命周期方法。例如,从 `MainActivity` 跳转到 `SecondActivity` ,生命周期变化如下: - `MainActivity.onCreate()` → `MainActivity.onStart()` → `MainActivity.onResume()` - 点击按钮后:`MainActivity.onPause()` - `SecondActivity.onCreate()` → `SecondActivity.onStart()` → `SecondActivity.onResume()` - 最后:`MainActivity.onStop()` [^4] 这种流程确保了资源的合理分配与释放,同提供了平滑的用户体验。 ### 示例代码总结 以下是完整的跳转逻辑示例: ```java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnNext = findViewById(R.id.btn_next); btnNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("fragment_flag", 2); startActivity(intent); finish(); // 可选:销毁当前 Activity } }); } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值