android–onTouchEvent()的Activity会触发3次?

android–onTouchEvent()的Activity会触发3次?,第1张

概述在我的TitleScreen活动中,我有……@OverridepublicbooleanonTouchEvent(MotionEventevent){Log.d("MyActivity","inonTouchEvent!");MediaPlayermyplayer=MediaPlayer.create(TitleScreen.this,R.raw.mysound);myplayer.start();star

在我的TitleScreen活动中,我有……

@OverrIDepublic boolean ontouchEvent(MotionEvent event){   Log.d("MyActivity", "in ontouchEvent!");   MediaPlayer myplayer = MediaPlayer.create(TitleScreen.this, R.raw.mysound);   myplayer.start();   startActivity(new Intent("com.example.GAME"));   return super.ontouchEvent(event);}

这导致声音在点击屏幕时快速连续播放3次,使我想播放的声音有一个延迟的回声.我检查了日志,以及我的“ontouchEvent!”消息被记录了3次.

此活动只是标题屏幕的静态图像,您可以点击它来开始下一个活动,当您这样做时,指定的声音应该是播放器.

对于我的特定问题,我能够通过放置一个全局级别的int变量来解决它:

private static int playerInstances = 0;

然后用我的MediaPlayer线包装:

if (playerInstances == 0){    MediaPlayer myplayer = MediaPlayer.create(TitleScreen.this, R.raw.critical1);    myplayer.start();    playerInstances++;}

这保证了该代码只执行一次.所以我的问题解决了.我只是想知道为什么我一次点击ontouchEvent三次.

解决方法:

你在ontouchEvent上实际做的事情(比使用静态变量更好)是:

@OverrIDepublic boolean ontouchEvent(MotionEvent event) {   final int action = event.getAction();   if(action == MotionEvent.ACTION_DOWN) {       Log.d("MyActivity", "in ontouchEvent!");       MediaPlayer myPlayer = MediaPlayer.create(TitleScreen.this, R.raw.mysound);       myPlayer.start();       startActivity(new Intent("com.example.GAME"));   }   return super.ontouchEvent(event);}
总结

以上是内存溢出为你收集整理的android – onTouchEvent()的Activity会触发3次?全部内容,希望文章能够帮你解决android – onTouchEvent()的Activity会触发3次?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1119699.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存