我对应该初始化MediaPlayer(或任何其他)类型的变量的位置有疑问。以下是两个代码,用于制作一个简单的媒体播放器应用程序(只有播放暂停按钮)来说明我的问题:
以下代码会导致应用崩溃:
public class MainActivity extends AppCompatActivity {
MediaPlayer mediaPlayer= MediaPlayer.create(this, R.raw.minigun);
public void play(View view){
mediaPlayer.start();
}
public void pause(View view){
mediaPlayer.pause();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
虽然这个工作正常:
public class MainActivity extends AppCompatActivity {
MediaPlayer mediaPlayer; //in the first code we initialized here
public void play(View view){
mediaPlayer.start();
}
public void pause(View view){
mediaPlayer.pause();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer = MediaPlayer.create(this, R.raw.minigun);
}
}
1 即可。为什么上面发生了什么?
2 即可。当代码运行时,内存中的第一个代码中的MediaPlayer对象是存储的吗?
我是 - 使用android studio - 没有编译错误 - 在模拟器上测试(我是新手,如果问题太原始就道歉)