我創建了一個播放聲音文件的android應用程序。當我按下home鍵我注意到,繼續播放聲音並沒有停止,所以我說我的班級裏以下功能:當「Back」或「Home」被按下時,Android應用程序是FC
@Override
protected void onStop()
{
super.onStop();
finish(); //kill the thread
pS.reset(); //stop the sound
}
@Override
protected void onPause()
{
super.onPause();
finish(); //kill the thread
pS.reset(); //stop the sound
}
當按下「返回」或「家」哪個做工作,它停止音樂,應用程序不會強制關閉。唯一的問題是,聲音不得不爲FC效力。如果沒有聲音播放,應用FC。 我猜這是
pS.reset();
功能不知道當聲音沒有播放時該怎麼辦。
如果我將其設置爲:
PS = NULL;
而不是pS.reset(),當按下「返回」或「主頁」時,如果沒有FC,它會執行相同的操作嗎?
我的PS初始化:
pS = MediaPlayer.create(iAct.this, R.drawable.sound);
編輯: 我註釋掉
pS.reset();
,並添加
pS = null;
它沒有FC,但聲音不停止播放。
我更新了我的onPause():
@Override
protected void onPause()
{
super.onPause();
if (pS.isPlaying()) {
pS.pause(); //stop the sound
finish();
}
else
finish();
}
我的日誌:
04-02 13:06:40.563: E/AndroidRuntime(925): FATAL EXCEPTION: main
04-02 13:06:40.563: E/AndroidRuntime(925): java.lang.RuntimeException: Unable to pause activity {com.testcom.myapp/com.testcom.myapp.MyappActivity}: java.lang.NullPointerException
04-02 13:06:40.563: E/AndroidRuntime(925): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2354)
04-02 13:06:40.563: E/AndroidRuntime(925): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2311)
04-02 13:06:40.563: E/AndroidRuntime(925): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2291)
04-02 13:06:40.563: E/AndroidRuntime(925): at android.app.ActivityThread.access$1700(ActivityThread.java:117)
04-02 13:06:40.563: E/AndroidRuntime(925): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:938)
04-02 13:06:40.563: E/AndroidRuntime(925): at android.os.Handler.dispatchMessage(Handler.java:99)
04-02 13:06:40.563: E/AndroidRuntime(925): at android.os.Looper.loop(Looper.java:123)
04-02 13:06:40.563: E/AndroidRuntime(925): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-02 13:06:40.563: E/AndroidRuntime(925): at java.lang.reflect.Method.invokeNative(Native Method)
04-02 13:06:40.563: E/AndroidRuntime(925): at java.lang.reflect.Method.invoke(Method.java:507)
04-02 13:06:40.563: E/AndroidRuntime(925): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-02 13:06:40.563: E/AndroidRuntime(925): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-02 13:06:40.563: E/AndroidRuntime(925): at dalvik.system.NativeStart.main(Native Method)
04-02 13:06:40.563: E/AndroidRuntime(925): Caused by: java.lang.NullPointerException
04-02 13:06:40.563: E/AndroidRuntime(925): at com.testcom.myapp.MyappActivity.onPause(MyappActivity.java:119)
04-02 13:06:40.563: E/AndroidRuntime(925): at android.app.Activity.performPause(Activity.java:3851)
04-02 13:06:40.563: E/AndroidRuntime(925): at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1191)
04-02 13:06:40.563: E/AndroidRuntime(925): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2341)
04-02 13:06:40.563: E/AndroidRuntime(925): ... 12 more
首先:什麼是你的logcat的輸出?它應該直接指向你的FC的來源。其次:我希望這是一個錯字,但是你在重寫onPause()時調用super.onStop()!這是不對的,你必須在onPause覆蓋中調用super.onPause()。此外:爲什麼你在onPause/onStop上完成你的活動? – AgentKnopf
我改爲super.onPause(); – Si8
好的,我正在尋找的是HOME或BACK按鈕,如果正在播放,它應該停止播放音樂。 – Si8