0

私のアプリは、スプラッシュ画面などで正しく起動しているようです。しかし、それが 6 秒間スリープ状態になり、メイン アクティビティに入るはずのときに、アプリがクラッシュします。助けてください。

これが私のコードです(android.intent.action1.MAINACTIVIVTY、「アクション」は意図的に「action1」に変更されました)

package com.hellhogone.multitools;

import com.hellhogone.multitools.R;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Window;
import android.view.WindowManager;

public class Splash extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.splash);

    MediaPlayer yo = MediaPlayer.create(Splash.this, R.raw.smusic); 
    yo.start(); 

    Thread timer = new Thread(){
        public void run(){
            try{
                sleep(6000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }finally{
                Intent h1 = new Intent("android.intent.action1.MAINACTIVITY");
                startActivity(h1); 
            }
        }
    };

    timer.start(); 
}

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



}
4

1 に答える 1

1

UI スレッド以外のスレッドからアクティビティを開始することはできません。この問題を回避するには、次を使用できますrunOnUiThread()

    }finally{
        runOnUiThread(new Runnable() {
            public void run() {
                Intent h1 = new Intent("android.intent.action1.MAINACTIVITY");
                startActivity(h1);
            }
        });
    }
于 2013-04-13T18:26:51.507 に答える