Android应用程序强制关闭home按钮等事件

Android应用程序强制关闭home按钮等事件,android,android-theme,android-2.2-froyo,forceclose,Android,Android Theme,Android 2.2 Froyo,Forceclose,我的应用程序播放mp3,但当我按下home(主页)按钮或从横向模式切换到纵向模式或从纵向模式切换到横向模式时,应用程序强制关闭。我使用Froyo在真实设备上运行我的应用程序 我的问题是: 为什么会发生这种情况 如何追溯强制关闭的原因 我对Android和Java都是新手 import android.media.AudioManager; import android.media.AudioTrack; import android.media.MediaPlayer

我的应用程序播放mp3,但当我按下home(主页)按钮或从横向模式切换到纵向模式或从纵向模式切换到横向模式时,应用程序强制关闭。我使用Froyo在真实设备上运行我的应用程序

我的问题是:

  • 为什么会发生这种情况
  • 如何追溯强制关闭的原因
我对Android和Java都是新手

    import android.media.AudioManager;
    import android.media.AudioTrack;
    import android.media.MediaPlayer;
    import android.media.MediaPlayer.OnCompletionListener;
    import android.os.Bundle;

    public class AudioPlayManager extends Activity
    implements OnCompletionListener
    {

    private File fileName;
    private volatile boolean playing;
    protected MediaPlayer mp1;

    public AudioPlayManager() {
        super();
        setPlaying(false);
    }

    public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
  mp1 = MediaPlayer.create(this, R.raw.telek_jobban_lezart);
  mp1.setOnCompletionListener(this);
  mp1.start();
    }

    public void setFileName(File fileName) {
this.fileName = fileName;
    }

    public File getFileName() {
return fileName;
    }

    public void setPlaying(boolean playing) {
this.playing = playing;
    }

    public boolean isPlaying() {
return playing;
    }

    protected void onStop() {
try{
    mp1.stop();
    mp1.release();
}
catch(Exception e){
    //e.printStackTrace();
}
    }

    @Override
    public void onCompletion(MediaPlayer arg0) {
// TODO Auto-generated method stub
mp1.start();
    }

    }
我的舱单:

     <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.audioplaya2"
        android:versionCode="1"
        android:versionName="1.0" >

        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="8" />

        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.audioplaya2.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>

    </manifest>


更新:解决方案

我在安卓2.2上运行了这个应用程序,显然它不是为安卓2.2构建的

该问题存在于设备上,但不存在于模拟器上。模拟器运行安卓4.2,设备运行安卓2.2。创建项目时,我保留了默认SDK设置:

最低要求SDK:API 8

目标SDK:API 17

使用API 17编译

主题:全息灯与黑暗行动条

全息主题需要API 11。直到我将所有API版本设置为8,我才得到警告


这对我来说是个惊喜。关于所需的最低SDK的信息说:选择应用程序支持的最低版本的Android。显然,这不是所需SDK的最小值的真正定义…

覆盖暂停或停止,并尝试在应用程序关闭前停止媒体播放器,可能类似的情况会导致失败, 方向改变误差
将有关媒体播放器内容的onCreate代码放在onPause(override)方法中,这可能会有所帮助。

按照以下步骤解决问题

  • 更新你的应用程序

  • 清除gmail存储数据

  • 清除应用缓存和数据

  • 重置智能手机出厂设置

  • 重置应用程序首选项

您可以从本演示教程中找到给定步骤的完整解决方案


我希望您能解决您的问题

您是否有权访问Eclipse之类的模拟器-您将能够获得错误类型和发生位置的日志。请阅读有关Android活动生命周期的信息。您需要编写onPause()和onResume()。对于特定的问题,请编辑您的问题以包括来自logcat的堆栈跟踪。您可以通过检查logcat来回溯力关闭。它将告诉您发生了什么运行时异常,以及在哪一行。如果这还不够,请添加一些调试语句和/或使用调试器逐步完成代码。我看不出当我更改方向时onPause为什么会运行。。。无论如何,我已经用与onStop相同的代码覆盖了onPause,但没有区别。。。我会试试LogCat。。。