我的java线程显示错误

我的java线程显示错误,java,android,Java,Android,我是android开发的初学者。我一直在尝试用一个音频文件来处理这个splashscreen,它会在3秒钟后自动消失。然后我的主要活动应该开始了。但是我的代码显示了一些我无法理解的错误。java类的代码如下:` public class splash extends Activity { MediaPlayer mySound; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(sa

我是android开发的初学者。我一直在尝试用一个音频文件来处理这个splashscreen,它会在3秒钟后自动消失。然后我的主要活动应该开始了。但是我的代码显示了一些我无法理解的错误。java类的代码如下:`

public class splash extends Activity {
MediaPlayer mySound;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    mySound=MediaPlayer.create(splash.this, R.raw.crowd_sound);
   mySound.start();
}
    Thread kill_Thread= new Thread(){
        public void run(){
            try {
                sleep(3000);
                Intent splash_intent=new Intent(splash.this,MainLFC.class);
                startActivity(splash_intent);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }finally {
                finish();
            }
        }
    };
    kill_Thread.start();


@Override
protected void onPause() {
    super.onPause();
    mySound.release();
}
}

清单文件如下所示:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".splash"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainLFC"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.inten**strong text**t.action.MAINLFC" />

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

应在主UI线程中启动新活动

如果您想与主线程通信,您可以使用一个处理程序并在那里启动一个新的活动

示例处理程序:

Handler hander = new Handler(){
        public void handleMessage(Message m){
            Intent splash_intent=new Intent(splash.this,MainLFC.class);
            startActivity(splash_intent);
        }
    };
向处理程序发送消息的示例:

Thread kill_Thread= new Thread(){
        public void run(){
            try {
                sleep(3000);
                hander.sendMessage(Message.obtain());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }finally {
                finish();
            }
        }
    };
    kill_Thread.start();

要获得假装的行为,必须从onCreate方法中调用线程。为此,您有两个选择,要么继续使用线程并在调用其start之前在onCreate中定义它,要么只使用处理程序。下面是两个选项的onCreate方法

使用线程

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    mySound=MediaPlayer.create(splash.this, R.raw.crowd_sound);
    mySound.start();
    Thread kill_Thread= new Thread(){
        public void run(){
            try {
                sleep(3000);
                Intent splash_intent=new Intent(splash.this,MainLFC.class);
                startActivity(splash_intent);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }finally {
                finish();
            }
        }
    };
    kill_Thread.start();

}

@Override
protected void onPause() {
    super.onPause();
    mySound.release();
}
使用处理程序

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    mySound=MediaPlayer.create(splash.this, R.raw.crowd_sound);
    mySound.start();
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        public void run() {
            Intent splash_intent=new Intent(splash.this,MainLFC.class);
            startActivity(splash_intent);
            finish()
        }
     }, 3000);

}
@Override
protected void onPause() {
    super.onPause();
    mySound.release();
}

在创建方法之外尝试以下操作:

public class kill_Thread extends Thread{
 public void run(){
  try {
    sleep(3000);
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
           Intent splash_intent=new Intent(splash.this,MainLFC.class);
             startActivity(splash_intent);
             }
          });
        } catch (InterruptedException e) {
            e.printStackTrace();
        }finally {
            finish();
        }
    }
};
在此处声明公共变量集:

public kill_Thread kt;
在OnCreate调用中:

kt.start();

但是我的代码显示了一些错误-什么错误?欢迎使用StackOverflow!请编辑问题以包含错误。它可能会帮助你得到更多更好的答案。你知道java吗?kill_Thread.start?方法之外?非常确定不能从非UI线程启动活动。@Selvin-就像我说的,我只是在学习。我见过的每个图坦卡蒙都是这样的。那我应该在哪里用呢?我试过了。还是一样的错误。*/kill_Thread.start中出错;线它无法识别start命令或其他东西。我已更新了代码。尝试新代码非常感谢您的回复。在看到您的代码后,我才开始阅读有关处理程序的内容。所以我想让我先试试其他代码。仍在学习。非常感谢您的回答。如果有帮助并解决了您的问题,请接受正确的答案。干杯