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

Android如何在启动新实例时杀死以前的应用实例,android,process,state,launching-application,android-launcher,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

我使用了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>

听起来你好像在尝试重新启动你的应用程序。你可以在不久的将来设置一个警报来启动你的应用程序,同时终止现有的进程

这可以通过以下代码实现:

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);

听起来你好像在尝试重新启动你的应用程序。你可以在不久的将来设置一个警报来启动你的应用程序,同时终止现有的进程

这可以通过以下代码实现:

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);
android:launchMode=singleInstance用于活动,而不是应用程序/进程。它不保留第一个实例。它确保只有一个实例。仔细阅读这本书

如果要终止活动,应调用finish

android:launchMode=singleInstance用于活动,而不是应用程序/进程。它不保留第一个实例。它确保只有一个实例。仔细阅读这本书


如果您想终止您的活动,您应该调用finish

您声称使用过它,但您的配置似乎没有!这就是我用的!当它从某个外部sourcelink启动时是否可以调试?如果isTaskRoot{final Intent Intent Intent=getIntent;final String intentAction=Intent.getAction;if Intent.hasCategoryIntent.CATEGORY\u DEFAULT&&Intent.hasCategoryIntent.CATEGORY\u BROWSABLE&&intentAction!=null&&intentAction.equalsIntent.ACTION\u VIEW{finish;}您声称使用过它,但您的配置似乎没有它!这就是我用的!当它从某个外部sourcelink启动时是否可以调试?如果isTaskRoot{final Intent Intent Intent=getIntent;final String intentAction=Intent.getAction;if Intent.hasCategoryIntent.CATEGORY\u DEFAULT&&Intent.hasCategoryIntent.CATEGORY\u BROWSABLE&&intentAction!=null&&intentAction.equalsIntent.ACTION\u视图{finish;}但这两个实例都携带不同的应用程序数据。假设instanceA从sourcelinkA中携带Bob的信息。如果应用程序是从sourcelinkB启动的,它初始化了携带Foo信息的instanceB,那么在这种情况下,应用程序应该使用Foo的信息自行启动,而包含Bob信息的instanceA应该自行完成。但两个实例都携带不同的应用程序数据。假设instanceA从sourcelinkA中携带Bob的信息。如果应用程序是从sourcelinkB启动的,它初始化了携带Foo信息的instanceB,那么在这种情况下,应用程序应该使用Foo的信息自行启动,而包含Bob信息的instanceA应该自行完成。