final double scaledDensity;
double tempScaledDensity;
+ super.onCreate ();
+
SERVICE = this;
handler = new Handler (Looper.getMainLooper ());
manager = getAssets ();
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
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
import android.app.ActivityManager;
import android.app.ActivityOptions;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
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 ();
+ }
+ }
};
# 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