为什么在onCreate()之外初始化mediaPlayer会导致应用程序崩溃?

时间:2017-12-14 10:25:06

标签: java android android-mediaplayer android-memory java-memory-model

我对应该初始化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   - 没有编译错误   - 在模拟器上测试

(我是新手,如果问题太原始就道歉)

0 个答案:

没有答案