android - 按下主页按钮时如何终止 Activity ?

标签 android android-activity android-homebutton

我想在用户按下主页按钮时终止一个 Activity。为此,我使用以下代码:

public void onPause() {
    super.onPause();
    this.finish();
}

它工作正常。但是,如果用户按下后退按钮而不是主页,它也会终止 Activity 。我希望后退按钮像往常一样执行,即它应该将用户带到上一个 Activity 。有什么想法吗?

下面是我的Activity类的代码:

public class HomeScreen extends Activity {
    /** Called when the activity is first created. */
        private Button btn_play;
        private MediaPlayer mp = new MediaPlayer();
        private static int AUDIO_NO = 1;
        public static String isVideoSelected = "";
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            try{
                btn_play = (Button)findViewById(R.id.btn_play);
                btn_play.setOnClickListener(btn_listener);
                if(isVideoSelected!="") isVideoSelected="";
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        play_audio(AUDIO_NO);
                    }
                }, 1000);
            } catch(Exception e) {

            }
        }
        private void play_audio(int slno) {
            try {
                if(slno == 1) mp = MediaPlayer.create(getBaseContext(), R.raw.audio_1);
                else if(slno == 2) mp = MediaPlayer.create(getBaseContext(), R.raw.audio_2);
                mp.setLooping(false);
                mp.setOnCompletionListener(audio_listener);
                mp.start();
            } catch(Exception e) {
                // do nothing
            }
        }
        private MediaPlayer.OnCompletionListener audio_listener = new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                // TODO Auto-generated method stub
                try{
                    mp.release();
                    if(AUDIO_NO == 1) {
                        play_audio(2);
                        AUDIO_NO++;
                    }
                } catch(Exception e) {

                }
            }
        };
        private View.OnClickListener btn_listener = new View.OnClickListener() {        
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                try{
                    if(mp.isPlaying()) {
                        mp.stop();
                        mp.release();
                    }
                    Intent intent = new Intent(getApplicationContext(), ScreenTwo.class);
                    startActivity(intent);
                } catch(Exception e) {

                } finally {
                }
            }
        };
        public void onUserLeaveHint() {
            super.onUserLeaveHint();
            try{
                if(mp.isPlaying()) {
                    mp.stop();
                    mp.release();
                }
                btn_play = null;
            } catch(Exception e) {

            }
        }
        @Override
        public void onDestroy() {
            super.onDestroy();
            try{
                if(mp.isPlaying()) {
                    mp.stop();
                    mp.release();
                }
                btn_play = null;
            } catch(Exception e) {

            }
        }
    }

最佳答案

我认为您需要在这里提供更多关于您的动机的信息:为什么您想要终止您在 Home presses 上的 Activity 而不是让系统管理它?你想完成什么不是自己发生的?如果只是不想让用户将任务切换回特定 Activity ,请查看可用于 task stack 的各种标志。 .

编辑:在这种情况下,您可能会导致您的 catch-all 异常处理出现问题。尝试将这些行移动到 finally 子句中,而不是在 try 中,并让您的异常处理程序至少记录它捕获的异常 (Log.e("tag", "Exception caught; ignoring:", e)).包罗万象通常是糟糕的编程习惯,特别是如果您至少没有记录异常以便您可以看到哪里出了问题。

        Intent intent = new Intent(getApplicationContext(), ScreenTwo.class);
        startActivity(intent);

关于android - 按下主页按钮时如何终止 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5220456/

相关文章:

android - 如何在 java 代码中管理 UI?

android - 通知点击 - 如果应用程序关闭打开 Activity ,如果应用程序打开显示当前 Activity

android - 如何覆盖 android 4.0 中的主页按钮

java - 优化图片显示

android - 更改 Android 项目中每种风格的启动器图标和名称

java - 如何使用按钮从 EditText 中删除最后一个字母?

android - 如何从自定义 View 开始一项 Activity

android - 三星Touchwiz始终在Android 4.1.1中启动时提示默认应用程序

android - 如何处理应用程序被HOME按钮最小化

java - HttpURLConnection 和 json android