
我正在开发一个对Android Studio中的吉他和弦感兴趣的应用程序.有2个微调器选择和弦,并且有一个imagevIEw在屏幕上显示和弦图.当用户选择和弦时,其图将出现在屏幕上并播放.不幸的是,它确实运行缓慢.我怎样才能使其更快?
这是java类
public class Chords extends ActionBaractivity implements AdapterVIEw.OnItemSelectedListener { String[] notes = {"A", "B", "C","C#","D", "E", "F","F#", "G"}; String[] mode = {"m", "m7", "5", " ", "7M", "dim", "aug", "sus2"}; Spinner sp; Spinner spinner2; TextVIEw textVIEw; TextVIEw t; TextVIEw t2; MediaPlayer mySound,mySound2,mySound3,mySound4,mySound5,mySound6,mySound7; private static ImageVIEw imgVIEw; int[] images = {R.drawable.aminor,R.drawable.eminor,R.drawable.a_major,R.drawable.cmajor,R.drawable.gmajor,R.drawable.dminor,R.drawable.bminor}; protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestwindowFeature(Window.FEATURE_NO_Title); setContentVIEw(R.layout.chords_screen); textVIEw = (TextVIEw) findVIEwByID(R.ID.textVIEw); sp = (Spinner) findVIEwByID(R.ID.spinner); spinner2 = (Spinner) findVIEwByID(R.ID.spinner2); t2=(TextVIEw) findVIEwByID(R.ID.textVIEw2); //creating adapter ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this, androID.R.layout.simple_spinner_item, notes); ArrayAdapter<String> adapter_state2 = new ArrayAdapter<String>(this, androID.R.layout.simple_spinner_item, mode); //setting drop down List type adapter_state.setDropDownVIEwResource(androID.R.layout.simple_spinner_dropdown_item); adapter_state2.setDropDownVIEwResource(androID.R.layout.simple_spinner_dropdown_item); //setting adapter to spinner sp.setAdapter(adapter_state); spinner2.setAdapter(adapter_state2); //setting Listener to spinner sp.setonItemSelectedListener(this); spinner2.setonItemSelectedListener(this); } @OverrIDe public voID onItemSelected(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) { imgVIEw = (ImageVIEw) findVIEwByID(R.ID.imageVIEw); mySound = MediaPlayer.create(this, R.raw.am); mySound2 = MediaPlayer.create(this, R.raw.em); mySound3 = MediaPlayer.create(this, R.raw.amajor); mySound4 = MediaPlayer.create(this, R.raw.cmajor); mySound5 = MediaPlayer.create(this, R.raw.gmajor); mySound6 = MediaPlayer.create(this, R.raw.dminor); mySound7 = MediaPlayer.create(this, R.raw.bm); if (sp.getSelectedItemposition() == 0 && spinner2.getSelectedItemposition() == 0) { mySound.start(); imgVIEw.setimageResource(images[0]); } if (sp.getSelectedItemposition() == 0 && spinner2.getSelectedItemposition() == 3) { mySound3.start(); imgVIEw.setimageResource(images[2]); } if (sp.getSelectedItemposition() == 1 && spinner2.getSelectedItemposition() == 0) { mySound7.start(); imgVIEw.setimageResource(images[6]); } if (sp.getSelectedItemposition() == 2 && spinner2.getSelectedItemposition() == 3) { mySound4.start(); imgVIEw.setimageResource(images[3]); } if (sp.getSelectedItemposition() == 4 && spinner2.getSelectedItemposition() == 0) { mySound6.start(); imgVIEw.setimageResource(images[5]); } if (sp.getSelectedItemposition() == 5 && spinner2.getSelectedItemposition() == 0) { mySound2.start(); imgVIEw.setimageResource(images[1]); } if (sp.getSelectedItemposition() == 8 && spinner2.getSelectedItemposition() == 3) { mySound5.start(); imgVIEw.setimageResource(images[4]); } } public voID onnothingSelected(AdapterVIEw<?> parent) { // Todo auto-generated method stub }}解决方法:
mySound = MediaPlayer.create(this, R.raw.am);mySound2 = MediaPlayer.create(this, R.raw.em);mySound3 = MediaPlayer.create(this, R.raw.amajor);mySound4 = MediaPlayer.create(this, R.raw.cmajor);mySound5 = MediaPlayer.create(this, R.raw.gmajor);mySound6 = MediaPlayer.create(this, R.raw.dminor);mySound7 = MediaPlayer.create(this, R.raw.bm);不要这样创建1个MediaPlayer. MediaPlayer是一个庞大的对象,创建其中的7个非常痛苦且缓慢.您甚至不应该在每次单击时都创建一个新的对象,而应该在oncreate中创建它,而应该在新的数据源集中创建它.
总结以上是内存溢出为你收集整理的java-项目运行缓慢全部内容,希望文章能够帮你解决java-项目运行缓慢所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)