2011-11-21 2 views
0

내 응용 프로그램에 문제가 발생했습니다. 내 backButton 응용 프로그램을 종료합니다. 내 응용 프로그램이 SyncService이고 모든 것이 Manifest에서 훌륭하게 보입니다. 응답없이 하루를 확인합니다 ...BackButton 응용 프로그램을 종료하십시오.

launchmode가 무언가를 변경하는지 이미 확인하고 있습니다. 누군가가 매니페스트에 모습을 가질 수 경우, 그것은 좋은 것 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.smile.android.ldapsync" android:versionCode="12" android:versionName="1.5"> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
    <uses-permission android:name="android.permission.READ_SYNC_STATS" /> 
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> 
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:enabled="true" android:persistent="true"> 
     <service android:name="com.smile.android.ldapsync.authenticator.LDAPAuthenticationService" android:exported="true" android:debuggable="true"> 
      <intent-filter> 
       <action android:name="android.accounts.AccountAuthenticator" /> 
      </intent-filter> 
      <meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator" /> 
     </service> 
     <service android:name="com.smile.android.ldapsync.syncadapter.SyncService" android:exported="true" android:debuggable="true"> 
      <intent-filter> 
       <action android:name="android.content.SyncAdapter" /> 
      </intent-filter> 
      <meta-data android:name="android.content.SyncAdapter" android:resource="@xml/syncadapter" /> 
     </service> 
     <activity android:name="com.smile.android.ldapsync.authenticator.LDAPAuthenticatorActivity" android:label="@string/ui_activity_title" android:excludeFromRecents="true"> 
      android:excludeFromRecents="true" 
       <!-- 
       No intent-filter here! This activity is only ever launched by 
       someone who explicitly knows the class name 
      --> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="5" /> 
</manifest> 

감사합니다;)

답변

2

당신이 버튼을 다시 누르면 "메인"활동 OS는 사용자가 이루어집니다 "로이 문제를 이해하고 언제 다시되지 않습니다 (당신이 당신의 활동 스택의 바닥 일명 출시 첫 번째)에있는 동안 곧 "사용자가"앱을 다시 시작하기 전에 다른 것을 확인하려고 할 수 있습니다. "라고 이해되는"집 "버튼으로 반대합니다.

그래서 앱을"종료 "하지 않으려는 경우 (안드로이드 앱은 OS가 그것을 죽인다. 그렇지 않으면 기억 될 때까지 기억에 잠길 것이다). 뒤로 버튼을 눌렀을 때 콜백을 무시해야한다.

public void onBackPressed() 

api doc이 다음과 같이 설명합니다.

"사용자가 뒤로 키를 누른 것을 감지하면 호출됩니다. 기본 구현은 현재 활동을 끝내기 만하면되지만 원하는대로 무엇이든 할 수 있습니다. "

제안 된 timo schloesser처럼 이벤트를 무시하고 흡수 할 수도 있습니다. 또는 가장 적절한 것이 무엇이든 할 수 있습니다 (예 : 다른 활동이나 화면)를 떠나기 전에 서비스를 죽이고

편집 :.. 당신은 또한 활동 클래스에서 상속 "moveTaskToBack"방법을 확인 할 수 있습니다 나는 그것을 사용한 적이 있지만,이 문제에 유용 할 수 있습니다

+1

이 당신이 찾고있는 답변입니다 .. 또한 단지 당신이 알고있는 onBackPressed 2.0 포워드 .. 지원 그래서 만약 당신이 1.6을 지원하려면, 당신은 onKeyDown 메서드를 사용해야하고 조치를 취해야합니다 뒤로 버튼 누름 –

4

당신이 onBackPressed 재정의하는 시도 했습니까?

@Override 
public void onBackPressed() { 
     return; 
} 
관련 문제