android 안드로이드 - 뒤로 버튼을 누르면 어떻게 활동을 종료합니까?




메뉴 액티비티 (5)

Activity가 시작되면 인터넷에서 이미지를로드합니다. 메모리를 절약하기 위해 뒤로 버튼을 눌러 Activity를 남겨두면 모든 데이터를 덤프 할 수 있습니다. 즉, 모든 문자열과 이미지가 제거됩니다. 이 일을하는 가장 좋은 방법은 활동을 죽이는 것이라고 생각했습니다.

글쎄, 뒤로 버튼을 눌렀을 때 콜백을 알아낼 수 없다. 따라서 onPause()onStop() 콜백을 사용하려고 시도했지만 두 가지 방법 모두 내 응용 프로그램을 강제 종료합니다. 다음은 코드입니다.

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

나는이 여러 변형을 시도했지만, 그들 중 누구도 작동하지 않는 것 같았다. 어떤 아이디어?


Answers

활동에 이것을 추가하십시오.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if ((keyCode == KeyEvent.KEYCODE_BACK))
    {
        finish();
    }
    return super.onKeyDown(keyCode, event);
}

음, 만약 애플리케이션 라이프 사이클이 어떻게 작동하는지에 대한 구조를 연구하면, 다른 액티비티가 포커스를 얻었을 때 onPause() 가 호출되고 액티비티가 더 이상 보이지 않을 때 onStop() 이 호출된다는 것을 알게 될 것입니다. .

내가 아직 배운 것부터 시작하면, 활성 상태이거나 포커스가있는 활동에서만 finish() 호출 할 수 있습니다. onPause() 메서드에서 finish() 를 호출하면 해당 활동이 더 이상 활성화되어 있지 않을 때 호출하는 것입니다. 따라서 예외가 throw됩니다.

onStop() finish() 에서 finish() 를 호출하면 작업이 백그라운드로 전송되므로 더 이상 표시되지 onStop() 예외가 표시됩니다.

back 버튼을 누르면 onStop() 이 호출됩니다.

아마도 Android가 현재하고 싶은 일을 자동으로 처리합니다.


우선, finish() 는 프로세스를 파괴하지 않고 메모리를 확보합니다. 액티비티 스택에서 액티비티를 삭제하면됩니다. 이 과정을 죽여야 할 것입니다.이 과정은 많은 질문에 응답됩니다 (여러 번 묻기 때문에).

그러나 적절한 대답은 - 하지 마라. 안드로이드 OS는 메모리가 필요할 때 자동으로 메모리를 비 웁니다. 메모리를 확보하지 않으면 사용자가 다시 돌아 오면 앱이 더 빨리 시작됩니다.

이 주제에 대한 훌륭한 글을 보려면 여기참조하십시오 .


public boolean onKeyDown(int keycode, KeyEvent event) {
    if (keycode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
    }
    return super.onKeyDown(keycode, event);
}

내 앱이 위 코드로 마감되었습니다.


어디서나 URL에 사용되는 버튼을 만들려면 앵커에 대한 버튼 클래스를 만듭니다.

a.button {
    background-color: #999999;
    color: #FFFFFF !important;
    cursor: pointer;
    display: inline-block;
    font-weight: bold;
    padding: 5px 8px;
    text-align: center;
    -webkit-border-radius: 5px;
    border-radius: 5px;
}
.button:hover {
    text-decoration: none;
}




android button android-activity kill back