后退按钮退出应用程序

时间:2011-11-21 14:31:27

标签: android android-manifest back-button

我的应用程序出现问题,我的backButton退出了应用程序。 我的应用程序是一个SyncService,在Manifest中一切似乎都很棒,我检查了一天没有回复......

我已经检查了启动模式是否改变了什么,我测试4并且没有任何附加... 如果有人可以查看清单,那就太棒了:

<?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 个答案:

答案 0 :(得分:4)

您是否尝试过覆盖onBackPressed?

@Override
public void onBackPressed() {
       return;
}

答案 1 :(得分:2)

如果您在“主”活动(您启动的第一个活动,也就是活动堆栈的底部)上按下后退按钮,操作系统会将其理解为“用户已完成且不会很快返回” “home”按钮被理解为“可能是用户想要在恢复应用之前检查其他内容”

所以,如果你不希望你的应用程序“终止”(一个Android应用程序终止只有当操作系统杀死它时,否则它将潜伏在内存中直到被召回)你需要覆盖后退按钮按下回调

public void onBackPressed()

api doc描述为:

“当活动检测到用户按下后退键时调用。默认实现只完成当前活动,但您可以覆盖它以执行任何操作。”

你可能会忽略这个事件并像timo schloesser建议的那样吸收它,或者你可以做任何最合适的事情(比如,在离开屏幕之前启动另一项活动或查杀服务)

编辑:您可能还想检查从Activity类继承的“moveTaskToBack”方法。我从未使用它,但它可能对你的问题有用。