mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-21 06:55:39 +00: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:
parent
845246093f
commit
2823eae0b7
@ -234,6 +234,8 @@ public final class EmacsService extends Service
|
||||
final double scaledDensity;
|
||||
double tempScaledDensity;
|
||||
|
||||
super.onCreate ();
|
||||
|
||||
SERVICE = this;
|
||||
handler = new Handler (Looper.getMainLooper ());
|
||||
manager = getAssets ();
|
||||
@ -247,9 +249,9 @@ public final class EmacsService extends Service
|
||||
resolver = getContentResolver ();
|
||||
mainThread = Thread.currentThread ();
|
||||
|
||||
/* If the density used to compute the text size is lesser than
|
||||
160, there's likely a bug with display density computation.
|
||||
Reset it to 160 in that case.
|
||||
/* If the density used to compute the text size is smaller than 160,
|
||||
there's likely a bug with display density computation. Reset it
|
||||
to 160 in that case.
|
||||
|
||||
Note that Android uses 160 ``dpi'' as the density where 1 point
|
||||
corresponds to 1 pixel, not 72 or 96 as used elsewhere. This
|
||||
@ -262,6 +264,10 @@ public final class EmacsService extends Service
|
||||
the nested function below. */
|
||||
scaledDensity = tempScaledDensity;
|
||||
|
||||
/* Remove all tasks from previous Emacs sessions but the task
|
||||
created by the system at startup. */
|
||||
EmacsWindowManager.MANAGER.removeOldTasks (this);
|
||||
|
||||
try
|
||||
{
|
||||
/* Configure Emacs with the asset manager and other necessary
|
||||
|
@ -27,6 +27,7 @@
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityOptions;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
@ -385,4 +386,44 @@ && isWindowEligible (consumer, window))
|
||||
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 ();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -20,22 +20,22 @@
|
||||
# The effect of the following lines is to inhibit the removal of variable or
|
||||
# method symbol names from symbols referenced from C.
|
||||
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsClipboard { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsContextMenu { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsCursor { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsDesktopNotification { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsDialog { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsDirectoryEntry { <fields>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsFontDriver { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsFontDriver$* { <fields>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsGC { <methods>; <fields>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsHandleObject { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsPixmap { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsService { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsWindow { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsNative { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsNoninteractive { <methods>; }
|
||||
-keep,allowoptimization interface org.gnu.emacs.EmacsDrawable { <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsClipboard { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsContextMenu { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsCursor { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsDesktopNotification { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsDialog { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsDirectoryEntry { public <fields>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsFontDriver { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsFontDriver$* { public <fields>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsGC { public <methods>; public <fields>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsHandleObject { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsPixmap { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsService { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsWindow { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsNative { public <methods>; }
|
||||
-keep,allowoptimization class org.gnu.emacs.EmacsNoninteractive { public <methods>; }
|
||||
-keep,allowoptimization interface org.gnu.emacs.EmacsDrawable { public <methods>; }
|
||||
|
||||
# And these lines inhibit the deletion of symbols that are referenced by
|
||||
# the operating system while enabling the compiler to minify or delete
|
||||
|
Loading…
Reference in New Issue
Block a user