我的java线程显示错误
我是android开发的初学者。我一直在尝试用一个音频文件来处理这个splashscreen,它会在3秒钟后自动消失。然后我的主要活动应该开始了。但是我的代码显示了一些我无法理解的错误。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
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命令或其他东西。我已更新了代码。尝试新代码非常感谢您的回复。在看到您的代码后,我才开始阅读有关处理程序的内容。所以我想让我先试试其他代码。仍在学习。非常感谢您的回答。如果有帮助并解决了您的问题,请接受正确的答案。干杯