Java 调用SplashScreenActivity后,应用程序将最小化

Java 调用SplashScreenActivity后,应用程序将最小化,java,android,Java,Android,我有以下问题:我想创建一个启动屏幕,我可以在我的游戏循环中调用它(这是一个“下一级”启动屏幕) 当我调用启动屏幕时,它可以处理动画和其他一切,但应用程序会在5秒钟后将自身最小化。此启动屏幕调用发生在主活动已经启动之后 我的活动如下所示: public class SplashActivity extends AppCompatActivity { private ImageView logo; @Override protected void onCreate(Bund

我有以下问题:我想创建一个启动屏幕,我可以在我的游戏循环中调用它(这是一个“下一级”启动屏幕)

当我调用启动屏幕时,它可以处理动画和其他一切,但应用程序会在5秒钟后将自身最小化。此启动屏幕调用发生在主活动已经启动之后

我的活动如下所示:

public class SplashActivity extends AppCompatActivity {
    private ImageView logo;

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

        logo = findViewById(R.id.logo);

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                finish();
            }
        }, 5000);

        Animation anim = AnimationUtils.loadAnimation(this, R.anim.viewanimation);
        logo.startAnimation(anim);
    }
}
我想通过以下调用在我的GameLoop中调用它:

Intent i = new Intent(gamePanel.getContext(), SplashActivity.class);
gamePanel.getContext().startActivity(i);    
SplashScreen打开,动画开始工作,但是主活动应该再次出现(不是新启动)。

使用
finishActivity()
而不是
finish()。

finish()。
ActivityResult
将通过
onActivityResult()传播回启动您的人。


finishActivity(int-requestCode)
用于完成您以前使用
startActivityForResult(Intent,int)
尝试此
Splash.java

    public class Splash extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_splash);
            Thread myThread=new Thread(){
               @Override
            public void run() {
                try {
      Animation anim = AnimationUtils.loadAnimation(this, R.anim.viewanimation);
                    logo.startAnimation(anim);  
//sleep time after animation
                    sleep(3000);  
//to end the splash screen and call next activity with Intent
                    finish();
                    Intent intent = new Intent(Splash.this,MainActivity.class);
                    startActivity(intent);

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            };
            myThread.start();

        }
    }  
在清单文件中,
Splash.java
将是您启动的第一个活动

<activity android:name=".Splash">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>  


希望有帮助。

我无法从上下文中使用startActivityForResult,它不适用于我。gamePanel继承自SurfaceView,这是我从中获取
getContext()
的地方。您是否在主活动中的init:gamePanel gamePanel=new gamePanel(this)上执行类似操作?如果是这样,您只需返回MainActivity:((MainActivity)gamePanel.getContext()).startActivityForResult(intent,i);对我在MainActivity中像这样启动GamePanel:
this.setContentView(newGamePanel(this))我刚刚尝试了这个,现在应用程序在SplashScreen上卡住了。(即使在5秒钟后也没有任何变化)也许问题出在舱单上?MainActivity具有类别启动器,SplashActivity具有类别默认值。应用程序是否在5秒后崩溃?它最小化,我可以再次聚焦它,然后循环重复,动画显示->最小化。