Mehmet Ethem SULAN :: Android :: Finish Activity When Home Pressed/Click Android Sample

Android ile home buttonun click olayını algılanmadığını açıklamaya çalışacağım. Diğer hangi tuş için onKeyDown() metouduna bir şey yazarsanız çalışır ama home buttonu istisnadır.
Çünkü home buttonu tıklanırken activity sırayla onPause() -> onStop(); metodlarını çalıştırıyor.
Siz aşağıdaki gibi home buttonun tıklanma olayında activityi sonlandırsanız dahil sonlanmaz.

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
	        switch (keyCode) {
	        case KeyEvent.KEYCODE_HOME:
	        	onDestroy();
	        	Log.d(">>>", "home buttonu tiklanarak activity sonlandi");
	            finish();
	            break;
	        	}
		return super.onKeyDown(keyCode, event);
	}

Dikkat bu logu atmadi:

 Log.d(">>>", "home buttonu tiklanarak activity sonlandi");  


HomeClickSampleActivity.java

package com.homeclick;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;

public class HomeClickSampleActivity extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
    }

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
	        switch (keyCode) {
	        case KeyEvent.KEYCODE_HOME:
	        	onDestroy();
	        	Log.d(">>>", "home buttonu tiklanarak activity sonlandi");
	            finish();
	            break;
	        	}
		return super.onKeyDown(keyCode, event);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
	}
//Home buttonuna tıklanınca önce bu sonra onStop() metodu çalışıyor
	@Override
	protected void onPause() {
		super.onPause();
		onDestroy();
		Log.d(">>>>>>>>>>>>>>>", "activity finished");
		finish();
	}
	@Override
	protected void onStop() {
		super.onStop();
		Log.d("onStop calisti", "onStop() metodu");
	}
	
	
}

Sırayla onPause() -> onStop(); metodlarındaki atılan loglara DDMS’den bakabilirsiniz.
Download HomeClickSample.tar.gz

Comments

There is one comment for this post.

  1. Paul Poulet on Ağustos 5, 2011 9:42 am

    Excellent. Thank you for this tip !

Write a Comment

Let me know what you think?