1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-17 00:30:37 -08:00

Remove leftover tasks from previous Emacs sessions on startup

* java/org/gnu/emacs/EmacsService.java (onCreate): Call
removeOldTasks.

* java/org/gnu/emacs/EmacsWindowManager.java (removeOldTasks):
New function.

* java/proguard.conf: Optimize optimizer configuration.
This commit is contained in:
Po Lu 2024-04-14 10:36:50 +08:00
parent 845246093f
commit 2823eae0b7
3 changed files with 66 additions and 19 deletions

View file

@ -27,6 +27,7 @@ import android.app.ActivityManager.RecentTaskInfo;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@ -385,4 +386,44 @@ public final class EmacsWindowManager
window.onActivityDetached ();
}
}
/* Iterate over each of Emacs's tasks to delete such as belong to a
previous Emacs session, i.e., tasks created for a previous
session's non-initial frames. CONTEXT should be a context from
which to obtain a reference to the activity manager. */
public void
removeOldTasks (Context context)
{
List<AppTask> appTasks;
RecentTaskInfo info;
ComponentName name;
String target;
Object object;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
return;
if (activityManager == null)
{
object = context.getSystemService (Context.ACTIVITY_SERVICE);
activityManager = (ActivityManager) object;
}
appTasks = activityManager.getAppTasks ();
target = ".EmacsMultitaskActivity";
for (AppTask task : appTasks)
{
info = task.getTaskInfo ();
/* Test whether info is a reference to
EmacsMultitaskActivity. */
if (info.baseIntent != null
&& (name = info.baseIntent.getComponent ()) != null
&& name.getShortClassName ().equals (target))
/* Delete the task. */
task.finishAndRemoveTask ();
}
}
};