Android Studio 启动画面无限循环,不会停止

Android Studio Splash screen is looping indefinitely and will not stop

我真的是编码新手,几乎不知道自己在做什么。

我需要让启动画面正常工作,但它在启动画面和主活动之间无限循环,我不知道为什么,我从一些 YouTube 视频中删除了代码,视频也没有解释,所以我卡住了。

这是主要活动的代码:

package sg.edu.tp.project1;

import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends AppCompatActivity {
private static int SPLASH_TIME_OUT = 1000;
private ImageButton Search01;
private ImageButton Mymusic;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Search01 = (ImageButton) findViewById(R.id.Search);
    Mymusic = (ImageButton) findViewById(R.id.Mymusic);


        }
{ new Handler().postDelayed(new Runnable(){
    @Override
    public void run() {
        Intent homeIntent = new Intent(MainActivity.this, 
HomeActivity.class);
        startActivity(homeIntent);
        finish();
    }



},SPLASH_TIME_OUT);
}
public void gotoSearchpage(View view){
    Intent intent = new Intent(this, searchpage.class);
    this.startActivity ( intent );
}
public void gotoMymusic(View view){
    Intent intent = new Intent(this, myMusic.class);
    this.startActivity ( intent );

}
public void gotoPlaylist(View view){
    Intent intent = new Intent(this, playlist.class);
    this.startActivity ( intent );
} }

这是启动画面的代码:

package sg.edu.tp.project1;

import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class HomeActivity extends AppCompatActivity {
private static int SPLASH_TIME_OUT = 1000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
}
{ new Handler().postDelayed(new Runnable(){
    @Override
    public void run() {
        Intent homeIntent = new Intent(HomeActivity.this, 
MainActivity.class);
        startActivity(homeIntent);
        finish();
    }



},SPLASH_TIME_OUT);
}


}

首先...在 Splash screen 中使用 AsyncTask 进行后台初始化和检查是最佳做法。

其次,您不需要 MainActivity 中的处理程序。

从 MainActivity 中删除此代码...它会将您重定向到 HomeActivity

{ new Handler().postDelayed(new Runnable(){
    @Override
    public void run() {
        Intent homeIntent = new Intent(MainActivity.this, 
HomeActivity.class);
        startActivity(homeIntent);
        finish();
    }



},SPLASH_TIME_OUT);

并像这样更改您的 HomeActivity(Splash)..

public class HomeActivity extends AppCompatActivity {
private static int SPLASH_TIME_OUT = 1000;

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

    new Loader().execute();

}


    private class Loader extends AsyncTask<Void,Void, Void>{

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();

        }


        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub

            try {

                Thread.sleep(SPLASH_TIME_OUT);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            //if(pd!=null) pd.dismiss();

            Intent intent = new Intent(HomeActivity.this,MainActivity.class);

            startActivity(intent);
            HomeActivity.this.finish();

        }
    }

    }