我正在开发一款适用于Android的迷你游戏.我正在使用此代码创建一个在游戏暂停时暂停的3分钟计时器:
class update extends Thread{
@Override
public final void interrupt(){
super.interrupt();
}
@Override
public void run(){
try{
while(true){
sleep(50);
iTime++;
if(iTime>=3600)
bEnd = true; //finish
postInvalidate();
}
}catch(InterruptedException e){
}
}
}
update thread = null;
3600 = 20*3*60
Run Code Online (Sandbox Code Playgroud)
计时器在大约5分钟内完成,在大约1.5分钟后在Galaxy Tab中完成.
为什么不总是需要3分钟?我如何确保在3分钟内完成?
可能重复:
如何创建可执行Java程序?
我已经在java.its中实现了一些语音识别应用程序,当我从eclipse运行时,eclipse运行良好..但是当我试图从命令行运行时我的代码没有运行..
我从sphinx中包含了一些jar ..像sphinx.jar,jsapi.jar,wsj_dictionary.jar,我的目录结构如下:

所以有人可以建议我如何制作.exe或可以直接运行的可执行jar文件?
提前致谢..
我有两个单独的代码,一个是:
Platform.runLater(new Runnable() {
public void run() {
}
});
Run Code Online (Sandbox Code Playgroud)
另一个是
SwingUtilities.invokeLater(new Runnable() {
public void run() {
}
});
Run Code Online (Sandbox Code Playgroud)
我想知道两者之间的区别是什么,以及何时使用一个或另一个,或者它们是否意味着完全相同的东西。谢谢你的帮助!
我正在尝试将SeekBar连接到片段中的MediaPlayer,但runnable根本没有运行.我在其中放了一个log.i来查看它是否运行但根本没有任何反应.
我将Handler声明为全局变量:
Handler seekHandler;
SeekBar sBar;
Run Code Online (Sandbox Code Playgroud)
然后在onCreateView上:
seekHandler = new Handler();
sBar = (SeekBar) v.findViewById(R.id.seekBar1);
Run Code Online (Sandbox Code Playgroud)
可运行:
Runnable run = new Runnable() {
@Override
public void run() {
sBar.setMax(mp.getDuration());
sBar.setProgress(mp.getCurrentPosition());
Log.i("TAG", "I'm running");
seekHandler.postDelayed(this, 25);
}
};
Run Code Online (Sandbox Code Playgroud)
mp变量是一个MediaPlayer.问题是Runnable甚至没有执行过一次.我在活动中的类似应用程序中使用完全相同的代码,它的工作完全正常.这是因为runnables在片段中的行为方式不同吗?此外,我正在使用带有ViewPager和2片段的TabLayout,如果这会影响其中任何一个.
我希望我的run方法在程序运行时每 5 秒执行一次,因此我将其放入循环中while(true)。问题是我的应用程序由于这个循环而无法运行while。有人可以解释如何正确编码该循环以便它始终运行吗?
这是我的代码:
int i=0;
while(true){
Runnable x = new Runnable(){
@Override
public void run(){
if(my_list_counter <= 0)
return;
random_counter = rand.nextInt(my_list_counter);
make_words_with_letters.add(list_of_letters.get(random_counter));
for(Button b:button_list)
if (b.getText().equals("")){
b.setText(list_of_letters.get(random_counter));
list_of_letters.remove(list_of_letters.get(random_counter));
my_list_counter--;
break;
}
}
};
i++;
Handler handler = new Handler();
//Run the code in runnable x at increasing time intervals of 5 seconds
handler.postAtTime(x, SystemClock.uptimeMillis() + i*5000);
}
Run Code Online (Sandbox Code Playgroud)
显然这里的错误是需要Runnable到达终点才能开始运行。但是,由于它处于while(true)循环中,因此永远无法开始运行。有人知道如何解决这个问题吗?
编辑:感谢 JavaHunter 新代码,但仍然有一个错误:
int i=0;
Runnable x = new Runnable(){ …Run Code Online (Sandbox Code Playgroud) new Timer().schedule(new TimerTask() {
public void run() {
KeyBoardUtil.showKeyBoard(et_search);
}
}, 300);
Run Code Online (Sandbox Code Playgroud)
我显示键盘使用 TimerTask,它运行良好。怎么解释呢?
我试图拥有一堆可以一次启动的可运行线程.就像是
First(new Thread() {
public void run() {
//do something
}
});
Run Code Online (Sandbox Code Playgroud)
我想要做什么是不可能的?
这个问题可能很愚蠢,我对Java和面向对象编程都很陌生.现在,我正在学习我的学期考试,我有这个问题:是Runnable和Thread抽象课吗?
创建线程时,我看到如下代码:
Runnable watdaheck = new Runnable()
{
System.out.println("java with time contradicts itself");
}
Run Code Online (Sandbox Code Playgroud)
据我所知,无法实例化接口,因此我无法理解我们如何编写Runnable()来创建匿名类。可以给接口一个参考,但是不能实例化多态性。
这个线程完成后,有没有办法让我传递"r"的值?我相信我在9或10个月之前在另一个项目上做过这个但是对于我而言,我不记得找到代码的项目了.我花了大约5个小时来挖掘代码和谷歌搜索,但是由于我不经常在Java\Android中开发,所以我已经完全放弃了我的想法.
下面是我的代码,以及我上次做这个时的记忆.我有点记得".call()"或".get()",但试图在android文档中找到一些东西.我不确定.我只能找到"可赎回".
public void updateUserProfile(){
if(checkFields(){
//Do Something
}else{
//Do Something
}
}
public boolean checkFields(){
Boolean r = false;
Runnable run = new Runnable(){
//Boolean r;
@Override
public void run() {
//Or boolean r;
//get value of r.
r = php.UpdateProfile.updateProfile(user_id, user_email);
}
};
new Thread(run).start();
return r; //run.get(r)?
}
Run Code Online (Sandbox Code Playgroud) 我试图了解Sonar规则squid:S1217,其中提到调用Thread.run()和Runnable.run()方法是一种不好的做法.我想知道可以使用Runnable.run()的场景.
我已经制作了一个Android应用程序,因为我得到一个ImageUrls的arrayList,我想通过使用这个arrayLis在android中自动生成lsideShow,我试过如下使用线程但它给了我arrayIndexOPutOfBounds异常,它转到第二个图像abd然后给出例外,请帮我保存,我的代码如下:
resultArray = new ArrayList<String>();
iv_paly.setOnClickListener(new OnCLickListener()){
@Override
OnClick(){
imageLoader.displayImage(resultArray.get(1), proImage, options);
proImage.postDelayed(swapImage, 3000);
}
MediaPlayer introSound, bellSound;
Runnable swapImage = new Runnable() {
@Override
public void run() {
for (int i = 0; i <= resultArray.size(); i++) {
imageLoader.displayImage(resultArray.get(i), proImage, options);
}
}
};
}
Run Code Online (Sandbox Code Playgroud)