Android如何在启动新实例时杀死以前的应用程序实例

时间:2014-01-15 05:53:55

标签: android process state launching-application android-launcher

我使用了android:launchMode =“singleInstance”,它会在保留第一个实例的同时停止创建应用程序的另一个实例。

这是我的活动的配置信息

<activity
        android:name="com.abc.SplashActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.ABC"
        >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />

            <data
                android:host="192.168.0.52"
                android:scheme="http" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

2 个答案:

答案 0 :(得分:2)

听起来您正在尝试重新启动应用。你可以通过在不久的将来设置一个警报来启动你的应用程序,同时杀死现有的进程。

可以使用以下代码实现:

AlarmManager alarm = (AlarmManager) MyActivity.this.getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, PendingIntent.getActivity(MyActivity.this, 0, new Intent(MyActivity.this, MyActivity.class), 0));
android.os.Process.sendSignal(android.os.Process.myPid(), android.os.Process.SIGNAL_KILL);

答案 1 :(得分:2)

android:launchMode="singleInstance"适用于某项活动,不适用于申请/流程。它不保留第一个实例。它确保只有一个实例。仔细阅读docs

如果您想要杀死自己的活动,请致电finish()