【发布时间】:2019-05-14 15:26:59
【问题描述】:
- 我有启动画面。
- 一旦我打开我的应用程序,启动屏幕将在完成将 Intent 传递给 HomeActivity 后出现。
- 但是当我在启动画面运行一段时间后杀死这个应用程序时,HomeScreen 会自动打开,但我想杀死这个应用程序。
- 但是当我关闭应用程序时,主屏幕不应该显示。
public class SplashAnimation extends Activity {
ImageView imageViewSplash;
TextView txtAppName;
RelativeLayout relativeLayout;
Thread SplashThread;
MediaPlayer mySong;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_view);
mySong=MediaPlayer.create(SplashAnimation.this,R.raw.monn);
mySong.start();
imageViewSplash = (ImageView) findViewById(R.id.imageViewSplash);
txtAppName = (TextView) findViewById(R.id.txtAppName);
relativeLayout = (RelativeLayout) findViewById(R.id.relative);
startAnimations();
}
private void startAnimations() {
Animation rotate = AnimationUtils.loadAnimation(this, R.anim.translate);
Animation translate = AnimationUtils.loadAnimation(this, R.anim.translate);
rotate.reset();
translate.reset();
relativeLayout.clearAnimation();
imageViewSplash.startAnimation(rotate);
txtAppName.startAnimation(translate);
SplashThread = new Thread() {
@Override
public void run() {
super.run();
int waited = 0;
while (waited < 3500) {
try {
sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
waited += 100;
}
SplashAnimation.this.finish();
Intent intent = new Intent(SplashAnimation.this, LibraryView.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
mySong.stop();
}
};
SplashThread.start();
}
@Override
protected void onStop() {
SplashAnimation.this.finish();
finish();
mySong.stop();
super.onStop();
}
@Override
protected void onDestroy() {
finish();
mySong.stop();
super.onDestroy();
}
}
【问题讨论】:
-
尝试将 Intent 部分放入 runOnUiThread() 方法
-
onDestroy()必须是public,因为它是一个回调方法并且是 Activtiy 生命周期的一部分。如果它受到保护,它就是不安全的,它可以在需要时正确访问 -
启动画面在做什么?它播放音乐对吗?
标签: android android-activity android-handler android-thread