这个是程序的框架,这里的两个Activity都在同一个包里(Activitys)
简单的Activity创建就不介绍了,不用去选什么类型的,直接这样,因为你去选的Activity关联创建出来的XML文件可能不是你想要的
然后在AndroidManifest.xml文件里修改,这样启动程序后就是WelcomeActivity
在layout文件下创建一个xml文件,命名为welcome_layout,大概是这样样子
主要的文件是WelcomeActivity,因为MainActivity文件是不用去修改的
这里Handler
是 WelcomeActivity
的非静态内部类,这可能会导致内存泄漏的问题。为了避免这种问题,你可以将 Handler
声明为静态内部类,并使用 WeakReference
来持有对 WelcomeActivity
的引用。这将确保 WelcomeActivity
在不再需要时可以被垃圾回收器回收,从而防止内存泄漏。
在 handleMessage
方法中,检查 activityReference
是否为空:
- 在处理消息之前,检查
WeakReference
中的WelcomeActivity
是否已经被垃圾回收,以防止空指针异常。如果不为控就跳转到MainActivity。
然后Handler
声明为静态内部类,这是为了防止内存泄漏,静态内部类不会隐式地持有对外部类的引用。到这里handler.sendEmptyMessageDelayed(0, 4000);就是延迟的代码
看到这里就整个代码结束咯,花时间书写不宜记得点赞 。哦对了 整个welcomeActivity的代码给你们!前面引入的import要根据你们的环境去引入,不一定一样
WelcomeActivity.java
package com.example.munuseummobileapp.Activitys;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.example.munuseummobileapp.R;
import java.lang.ref.WeakReference;
public class WelcomeActivity extends AppCompatActivity {
// 声明一个静态内部类,为了防止内存泄漏,静态内部类不会隐式地持有对外部类的引用。
private static class MyHandler extends Handler {
private WeakReference<WelcomeActivity> activityReference;
//使用 WeakReference 来引用 WelcomeActivity:
//这样可以确保 WelcomeActivity 在不再需要时能够被垃圾回收器回收,从而避免内存泄漏。
MyHandler(WelcomeActivity activity) {
activityReference = new WeakReference<>(activity);
}
@Override
public void handleMessage(Message msg) {
WelcomeActivity activity = activityReference.get();
if (activity != null) {
Intent intent = new Intent(activity, MainActivity.class);
activity.startActivity(intent);
activity.finish();
}
}
}
// 使用静态内部类的实例
private MyHandler handler;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome_layout);
// 初始化 Handler
handler = new MyHandler(this);
// 发送延迟消息
handler.sendEmptyMessageDelayed(0, 4000);
}
}
Welcome_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/welcome"/>
</LinearLayout>
这里的src是你们把图片放到这个位置,然后后面把welcome这个图片名称 改成你们的图片名称就ok!
最终结果就是从这样
4秒后跳转成这样
关注我,求求了,我要做毕设,每天更新我做毕设过程中的东西,直到整个项目完成,最后我会把我的毕设传到博客让你们去用!!!!!