Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: ics
Commits on Dec 13, 2011
  1. fix, again, ics build

    authored
    Change-Id: Idde56fd87d686b69aa9d973b35d8834952ef0bff
  2. @turl

    AndroidTerm: Spanish translation updated

    turl authored committed
    Change-Id: Iad30d2ff05a577c7a657af2ea0d55d5996d484cb
  3. @djMesias

    es_ES: Add missing translations

    djMesias authored committed
    Final translations for spanish language.
    
    Change-Id: I7e777b09b03249b923e6c6b5e4f2c208ebaf7271
  4. AndroidTerm: update Simplified Chinese translations

    John Hsing authored committed
    Change-Id: I523b59205fd40bece394a8ccc7c543fdbf272f52
  5. @turl

    AndroidTerm: Merge remote branch 'upstream/master' into update

    turl authored committed
    Conflicts:
        AndroidManifest.xml
        res/layout/term_activity.xml
        res/values/strings.xml
        src/jackpal/androidterm/Term.java
        src/jackpal/androidterm/util/ServiceForegroundCompat.java
    
    commit e543ef9
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sun Sep 18 10:13:05 2011 -0700
    
        Generate native code for x86 as well as armeabi.
    
        In theory this will allow Android Terminal Emulator to run on an
        x86 version of Android.
    
    commit 7165bc8
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sun Sep 18 10:11:20 2011 -0700
    
        Update config file for latest Android SDK
    
    commit 3a738cd
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sun Sep 18 10:09:24 2011 -0700
    
        Update private build tool to support NDK r6b
    
    commit ccfdb92
    Author: jjsan <juraj.janecek@gmail.com>
    Date:   Tue Sep 6 21:36:55 2011 +0200
    
        Updated Slovak Language
    
        Change-Id: I7de4ff32182bcba7e0379e3316b05e39a2aa50a8
    
    commit 5238dae
    Author: Jack Palevich <jack.palevich@gmail.com>
    Date:   Mon Aug 29 16:52:45 2011 -0700
    
        Increment version number.
    
    commit 811696d
    Author: Jack Palevich <jack.palevich@gmail.com>
    Date:   Sun Aug 28 11:34:21 2011 -0700
    
        Handle fractional-pixel-width fixed-width fonts.
    
        This should fix the problems people have been having with text rendering
        when using non-standard fixed-width fonts.
    
    commit f727e5f
    Author: Jack Palevich <jack.palevich@gmail.com>
    Date:   Sun Aug 28 10:29:52 2011 -0700
    
        Remove JDK 1.5-incompatible interface method @Override annotations
    
        Allows building with JDK 1.5.
    
    commit 62c8611
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sun Aug 28 09:43:09 2011 -0700
    
        Avoid accessing a finished TranscriptScreen when resuming the terminal activity
    
        updatePrefs() may ask each terminal session in the list to update its
        size, which requires accessing the TranscriptScreen.  Therefore, we need
        to update the list of running terminal sessions before calling
        updatePrefs(), to preclude the possibility of accessing a finished
        TranscriptScreen.
    
        Also, if a window was closed in the WindowList activity, and then the
        user selected a specific window, the window number passed to us in
        onActivityResult() refers to the window list *after* taking window
        closures into account.  We therefore need to defer switching to the
        user's selected window until after the list of running sessions is
        updated (onActivityResult() is called before onResume(), so it can't be
        done there); this avoids calling onResume() on a stale EmulatorView,
        which results in an attempt to access a finished TranscriptScreen.
    
    commit 6b70a47
    Author: Jack Palevich <jack.palevich@gmail.com>
    Date:   Sat Aug 27 21:43:09 2011 -0700
    
        Fix resource-related problems when running on Android 1.5 to 2.2
    
        Hurray for the emulator for making it easy to test older versions
    
        + Use our own copies of system drawables not available in older versions.
    
        + Make sure there's a (mdpi resolution) copy of every drawable in the
         plain "drawable" directory, since that's where Android 1.5 looks.
    
    commit 9c11960
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sat Aug 27 13:33:30 2011 -0700
    
        Add UI for switching and managing terminal sessions.
    
        We expose three different ways to manage terminal sessions:
    
        * Options menu items to open a new window and close the current window.
        * A WindowList activity, reachable from the options menu, which lists
          all the open windows and allows opening, closing, and switching of
          windows.  The behavior is patterned after the window list activity in
          the Android browser.
        * Gestures to change windows -- swipe right-to-left for the next window,
          left-to-right for the previous window.
    
        The options menu items have been reordered to make what should be the
        five most frequently used items (new window, close window, window list,
        toggle keyboard, special keys reference) appear in the icon menu so that
        the user doesn't have to touch "More" to reach them.
    
        This patch adds several icons.  btn_close_window and ic_menu_windows
        come from the Android browser source, while the rest come from the
        Android 2.3.3 SDK platform, revision 2 (platforms/android-10/data/res).
    
    commit 5f41148
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sat Aug 27 13:23:52 2011 -0700
    
        Support multiple sessions per terminal activity.
    
        This patch does the following:
    
        * Replace the EmulatorView widget in the activity layout with a
          TermViewFlipper, which is a ViewFlipper with a couple of added
          conveniences for dealing with EmulatorViews (e.g. pausing/resuming
          them when changing the view).
        * Add an ArrayList in the service to hold TermSessions, and make the
          activity bind to the service so that it can retrieve the list.  This isn't
          strictly necessary for multisession support, but allows us to decouple
          the activity from the sessions, which will (in the future) allow us to
          restart or even close the activity without losing running sessions.
        * Now that EmulatorViews aren't being created automatically when the
          layout is inflated, but are instead created by hand, move a bunch of
          initialization stuff to the EmulatorView constructor.
        * Make the input reader threads for each session exit on EOF.  These
          threads hold a reference to their TermSession objects, which would
          leak otherwise.
    
        For now, one EmulatorView and TermSession are created as soon as the
        activity binds to the service, if none exist; no UI to create additional
        sessions is included.
    
    commit f44119c
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sat Aug 27 13:22:21 2011 -0700
    
        Don't accept input from process after TranscriptScreen is finished.
    
        This prevents a bunch of noise in the logs.
    
    commit 4ffcbfd
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sat Aug 27 12:37:47 2011 -0700
    
        Throw away TranscriptScreen backing store on session finish
    
        Android's InputMethodManager seems to hold a reference to a finished
        activity object for a while after the activity is destroyed.  This
        keeps everything the activity holds a reference to in memory, which in
        our case includes a fairly significant chunk of memory: the backing
        store to the TranscriptScreen.  Throw this away when it's not needed, to
        reduce the memory impact of this behavior.
    
    commit 47cc8a2
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sat Aug 27 12:33:24 2011 -0700
    
        Use TermSession in activity and view instead of old terminal-handling code
    
        This completes the process of isolating the code for each terminal
        session, which should considerably simplify the task of adding support
        for multiple sessions.
    
    commit bf017db
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sat Aug 27 12:29:49 2011 -0700
    
        Add TermSession class to represent a terminal session
    
        At the moment, the assumption that each terminal activity contains only
        one EmulatorView and hosts only one terminal session is fairly deeply
        embedded into the code.  To help break this assumption, we introduce a
        new TermSession class, which holds the TerminalEmulator and
        TranscriptScreen for a session, and handles the launching and watching
        of the process and the setup of the I/O streams.
    
    commit be18807
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sat Aug 27 12:24:29 2011 -0700
    
        Modify the activity and view to use the new TermSettings class.
    
    commit 972a349
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sat Aug 27 12:20:44 2011 -0700
    
        For multisession support, we eventually want to keep the terminal
        sessions in the service instead of tying them to the activity.  This
        implies that we have to stop holding SharedPreferences objects in all of
        the classes tied to the session.  To this end, introduce a new
        TermSettings class, which is responsible for reading SharedPreferences
        and holding the current value of config settings.
    
    commit cbd439b
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sat Aug 27 12:12:54 2011 -0700
    
        This patch isn't really necessary, but it makes life easier for me.  For
        local builds, I change the package name to
        net.steven676.android.terminal, which allows co-installation with the
        Market version; however, if the debug constants stay in the Term class,
        I have to change every file using them to either belong to the new
        package, or else import net.steven676.android.terminal.Term.
    
    commit ff2dcf6
    Author: Steven Luo <steven+android@steven676.net>
    Date:   Sat Aug 27 12:02:31 2011 -0700
    
        The fact that Term.java contains substantially all of the classes of the
        application clashes with Java's model of one class per file, and is
        inconvenient when refactoring the code to allow for multiple terminal
        sessions in the activity.  This patch splits out all of the classes into
        separate files, and groups related classes into packages; no actual
        changes to the code are made.
    
    commit 56dc959
    Author: Jack Palevich <jack.palevich@gmail.com>
    Date:   Sat Aug 27 11:38:01 2011 -0700
    
        Ignore local.properties
    
        contains machine-specific information, not useful to save in repo.
    
    commit 029570a
    Author: Jack Palevich <jack.palevich@gmail.com>
    Date:   Mon Aug 22 20:53:29 2011 -0700
    
        Shrink market icon to match "safe" bounds
    
        See http://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870
    
    commit dd43ce4
    Author: Jack Palevich <jack.palevich@gmail.com>
    Date:   Mon Aug 22 20:39:40 2011 -0700
    
        Improve market icon.
    
        Shinier, and more like a terminal.
    
    commit 3f50ffa
    Author: Jack Palevich <jack.palevich@gmail.com>
    Date:   Sun Aug 21 16:44:04 2011 -0700
    
        Updated translations
    
        Thanks to fireb33@gmail.com
    
    commit a6f3ac3
    Author: Ondrej Zima <keltuv.email@gmail.com>
    Date:   Tue Aug 16 10:27:44 2011 +0200
    
        Added Czech translation.
    
        Change-Id: I42fc8a3c56c5ce7fa457a3f1b7f54c875cb9ce2b
    
    commit 804f3b5
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 25 20:11:04 2011 +0800
    
        Increment version number.
    
    commit 839ac83
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 25 20:09:29 2011 +0800
    
        Update in-app documentation for special keys
    
        Contributed by Steven Luo steven+android@steven676.net
    
    commit cb368f0
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 25 20:07:44 2011 +0800
    
        Add F1-F12 and Ins/Del/Home/End keys
    
        Contributed by Steven Luo steven+android@steven676.net who writes:
    
        The mapping is as follows:
    
        Fn-[1-9]: F1-F9
        Fn-0: F10
        Ctrl-9: F11
        Ctrl-0: F12
        Fn-I: Ins
        Fn-X: Del
        Fn-H: Home
        Fn-F: End
    
        It should be noted that a real VT100 does not have Home/End keys, and as
        such, the terminfo entry for TERM=vt100 doesn't contain escape codes for
        Home and End.  This bothers some applications, but not others.  The
        codes generated match those sent by the Linux console (TERM=linux),
        which appears to work fine as a TERM setting since the emulation fixes
        in 1.0.30.  xterm sends different escape codes, though; I left the
        escape codes at their present values because TERM=xterm causes problems
        with some applications.
    
        Addresses GitHub issue #9.
        ---
        I'm unhappy with the reintroduction of different behaviors for the Ctrl
        key, but I couldn't think of another choice that's guaranteed to make
        sense on any soft keyboard layout.  (Fn-J/K and Fn-(/) are the two other
        possibilities that occurred to me.)  Feel free to change.
    
    commit 29e95e9
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 25 20:03:30 2011 +0800
    
        Fix behavior of Ctrl-[0-9]
    
        Patch contributed by Steven Luo. steven+android@steven676.net
    
        Steven writes:
    
        In xterm on my Debian system, the Ctrl-[0-9] combinations appear to map
        to the following:
    
        Ctrl-2: ^@ (NUL)
        Ctrl-3: ^[ (ESC)
        Ctrl-4: ^\
        Ctrl-5: ^]
        Ctrl-6: ^^
        Ctrl-7: ^_
        Ctrl-8: \177 (DEL)
    
        Ctrl-1, Ctrl-9, and Ctrl-0 appear to send 1, 9, and 0 respectively.
    
        I have no idea whether anyone actually seriously uses these, but make
        these key combinations behave in that manner, and remove the bogus
        Ctrl-[0-9] and superfluous Fn-[234] combos.
    
    commit 8928316
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 25 20:00:54 2011 +0800
    
        Make Ctrl/Fn-[A-Z] work with uppercase as well as lowercase letters
    
        Patch courtesy Steven Luo steven+android@steven676.net
    
        Steven says:
        For Ctrl-[A-Z], this matches the behavior of xterm running on my Debian
        box; for Fn-[A-Z], there are no possible compatibility issues and it
        seems like the most natural thing to do.
    
    commit 290aaf2
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 25 19:50:56 2011 +0800
    
        Add link to Downloads page to README file.
    
    commit 2802515
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 25 19:45:32 2011 +0800
    
        Enable an initial command string to be passed as part of the intent.
    
        Thanks to Christoph Schmidt-Hieber, M.D., c.schmidt-hieber@ucl.ac.uk
        for the idea and the patch.
    
    commit cd9a67a
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 25 19:35:39 2011 +0800
    
        Update Italian localization
    
        Thanks to fireb33@gmail.com
    
    commit 9c5e6f7
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 18 19:43:58 2011 +0800
    
        Increment version number.
    
    commit a6e99b9
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 18 21:16:32 2011 +0800
    
        Implement a "None" setting for control and function keys.
    
        Thanks to Eli Grey <me@eligrey.com> for the idea.
    
        Also made the "Special keys" dialog text localizable.
    
    commit c19d57e
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 18 21:11:42 2011 +0800
    
        Rename the rt tool to pushAndRun
    
        This tool is used to build and test the terminal emulator.
    
    commit 5d499f4
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 18 19:43:22 2011 +0800
    
        Allow application to be installed on the SD Card.
    
    commit 81ddd14
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 18 19:40:54 2011 +0800
    
        Fix insert and delete line code.
    
        Thanks to Sam Jacobson <sam.jacobson@snitchinc.com> for the
        bug report and fix!
    
    commit 4f369e5
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 18 19:37:15 2011 +0800
    
        Implement missing SGR escape codes
    
        Thanks to Sam Jacobson <sam.jacobson@snitchinc.com> for the bug report!
    
    commit c66d078
    Author: Jack Palevich <jackpal@google.com>
    Date:   Sat Jun 18 21:17:09 2011 +0800
    
        Escape single quote character so string resource compiles.
    
    commit 6ddda13
    Merge: df515f5 1d8bfb7
    Author: Jack Palevich <jack.palevich@gmail.com>
    Date:   Sat Jun 18 04:02:36 2011 -0700
    
        Merge pull request #20 from cpasmoi/master
    
        missing translations
    
    commit 8568e0d
    Author: Patrik Kullman <patrik.kullman@gmail.com>
    Date:   Sun Jun 12 09:48:43 2011 +0200
    
        Mark non-translatable strings
    
    Change-Id: I923fa5aafb0345fcfba0ad6d6ae01feb9d0f2c48
Commits on Nov 14, 2011
  1. @Eug89

    androidterm: Updated Italian translations

    Eug89 authored
    Change-Id: I1f9ab706fce9b79b792406b298b811cecd5b626b
Commits on Nov 4, 2011
  1. @AndreasBoehm

    AndroidTerm: Updated German Translation

    AndreasBoehm authored
    Change-Id: I29bc56087bbad169f9fcd0b1ff836d9a6e05bd0a
Commits on Oct 1, 2011
  1. @pvolkov
Commits on Sep 6, 2011
  1. @jjsan

    Updated Slovak Language

    jjsan authored
    Change-Id: I7de4ff32182bcba7e0379e3316b05e39a2aa50a8
Commits on Aug 16, 2011
  1. @Keltek

    Added Czech translation.

    Keltek authored
    Change-Id: I42fc8a3c56c5ce7fa457a3f1b7f54c875cb9ce2b
Commits on Jun 12, 2011
  1. @nomego

    Mark non-translatable strings

    nomego authored
    Change-Id: I1ce87fbc016cce8188a29604c69e56e7820b3f47
  2. @nomego

    Updated Swedish translations

    nomego authored
    Change-Id: Ia7753c44dc2cb676d0e481b1796aeeb35c43d1be
Commits on Jun 3, 2011
  1. @cyanogen

    Merge "Traditional Chinese: Update translations for v1.0.29" into gin…

    cyanogen authored Gerrit Code Review committed
    …gerbread
Commits on May 30, 2011
  1. @cuviper @cyanogen

    AndroidTerm: Build the JNI lib as a dependency rather than packaged

    cuviper authored cyanogen committed
    Since it's installed as a system app, AndroidTerm needs its library to
    be located in /system/lib/ rather than within its apk.
    
    Change-Id: I528325f9745c52bd427e3f861536834270eac6fd
  2. @ladios

    Traditional Chinese: Update translations for v1.0.29

    ladios authored
    Change-Id: I65659be6590c067f84a10b6c8be7d3f34a1fe997
Commits on May 29, 2011
  1. @cyanogen

    Merge branch 'master' of https://github.com/jackpal/Android-Terminal-…

    cyanogen authored
    …Emulator into HEAD
    
    Conflicts:
    	Android.mk
    	AndroidManifest.xml
    	jni/Android.mk
    	res/values-de/arrays.xml
    	res/values-de/strings.xml
    	res/values/arrays.xml
    	src/jackpal/androidterm/Exec.java
    	src/jackpal/androidterm/Term.java
    
    Change-Id: I4eb8df22794c17b490ca5131f10af6f11506891b
Commits on May 28, 2011
  1. @danez

    Updated german translation. Fixed Typos.

    danez authored
    Made Email -> E-Mail, which is correct, see http://bit.ly/aWf8Af
    
    Change-Id: Idf58a1991173815e1f68bcd05f346e091bce48ea
Commits on May 24, 2011
  1. @jackpal

    Increment version number.

    jackpal authored
  2. @jackpal

    Use a global reference to hold onto a class object between JNI calls.

    jackpal authored
    This bug was detected by using CheckJNI
    
    (setprop dalvik.vm.checkjni true; stop; start).
  3. @jackpal

    Update local properties for building on a new machine.

    jackpal authored
    (Maybe I shouldn't check this file in at all.)
  4. @jackpal

    Increment version number.

    jackpal authored
  5. @steven676 @jackpal

    Change shared library name (again) to make sure our copy takes preced…

    steven676 authored jackpal committed
    …ence on CyanogenMod
    
    Commit 28d47b8... ("Fix java.lang.UnsatisfiedLinkError error.") changed
    the name of the shared library from libandroidterm to libandroidterm2,
    to avoid a potential library conflict with API/ABI incompatible versions
    being shipped in some custom firmwares.  Unfortunately, CyanogenMod also
    uses the name libandroidterm2:
    
    CyanogenMod@7d0de89
    
    Change the name again, this time to something that should hopefully be
    unique, which should fix the problems that CyanogenMod users have been
    reporting in the Android Market comments.  (A big scary warning to
    firmware distributors that the shared library ABI must not be modified
    without consulting upstream might be appropriate somewhere ...)
    
    Signed-off-by: Jack Palevich <jackpal@google.com>
Commits on May 21, 2011
  1. @cyanogen

    Merge "AndroidTerm: Dutch translation added (re-checked). Completely …

    cyanogen authored Gerrit Code Review committed
    …checked for errors by WGSpoelstra, thank you." into gingerbread
Commits on May 20, 2011
  1. @ottuh

    AndroidTerm: Dutch translation added (re-checked).

    ottuh authored
    Completely checked for errors by WGSpoelstra, thank you.
Commits on May 14, 2011
  1. @elelinux

    Added Swedish translation

    elelinux authored
    Change-Id: Ifb2a082420adbbf271d3a31bcba07b5d5e76c6fe
Commits on Apr 25, 2011
  1. @jackpal

    Bump version number.

    jackpal authored
  2. @jackpal

    Fix java.lang.UnsatisfiedLinkError error.

    jackpal authored
    Change shared library name from libandroidterm to libandroidterm2
    
    My theory is that this bug is happening on systems that have
    system versions of the libandroidterm shared library.
    
    Version 1.0.26 of Android Terminal Emulator added a new API,
    hangupProcessGroup, to the libandroidterm library.
    
    I think on devices that have libandroidterm in their system library,
    that version takes precedence over the version in the application,
    and so the hangupProcessGroup API is not found.
    
    By changing the name of the libandroidterm library to libandroidterm2
    we should avoid loading the system version of the
    libandroidterm library.
  3. @jackpal

    Housekeeping odds-and-ends.

    jackpal authored
    Make sure the release build is a clean build.
    Regenerate build.xml
    Add update.sh script for regenerating build.xml
Commits on Apr 23, 2011
  1. @jackpal
  2. @jackpal

    Bump version number.

    jackpal authored
  3. @jackpal

    Add commitCorrection() to our InputConnection

    jackpal authored
    Required in order to compile under API level 10.
  4. @jackpal

    Add setComposingRegion() and getSelectedText() to our InputConnection

    jackpal authored
    The definition of the InputConnection interface for SDK version >= 9
    includes new functions setComposingRegion() and getSelectedText().  If
    we don't include them in our implementation, the build fails with
    
       [javac] /home/steven/devel/android-terminal-emulator/src/jackpal/androidterm/Term.java:2955: <anonymous jackpal.androidterm.EmulatorView$4> is not abstract and does not override abstract method setComposingRegion(int,int) in android.view.inputmethod.InputConnection
    
    (at least when building with SDK 10).
  5. @jackpal

    Make the Terminal activity singleTask instead of singleInstance

    jackpal authored
    With the Terminal activity's launchMode set to singleInstance, the
    Preferences activity starts a new task, which can lead to some very
    strange back stack behavior.  Set launchMode to singleTask instead,
    which will allow the Preferences activity into the same task.
  6. @jackpal

    Add menu options to take WakeLock and WifiLock

    jackpal authored
    It can be very useful to prevent the device from sleeping or from
    turning off the wifi radio -- but in a general terminal application it's
    difficult to guess when this is wanted.  Consider the following:
    
    (1) Nothing is happening.  We don't want to hold either a WakeLock or
    WifiLock.
    (2) The user is logged into a remote system via SSH on wifi.  We don't
    need to hold a WakeLock, but should take a WifiLock to prevent the SSH
    session from being disconnected.
    (3) The user is doing some long-running computation (locally on the
    device) in the shell.  We should take a WakeLock, but not a WifiLock.
    (4) The user is doing apt-get dist-upgrade in her Debian chroot on the
    device.  We should hold both a WakeLock and a WifiLock.
    
    Therefore, assume the user knows best, and add menu options to take/drop
    a WakeLock and a WifiLock.  Note that this requires adding WAKE_LOCK to
    the set of permissions we use.
  7. @jackpal

    Add a service to prevent Android from killing our process

    jackpal authored
    By default, an Android process is liable to be killed whenever it's
    not in the foreground.  When this happens to us, it leaves the user
    unable to resume her terminal session, which is still running.
    
    By starting a service in our process (even one which, like this one,
    does nothing at all) and marking it as a foreground service, we prevent
    the system from killing our process except in out-of-memory situations.
Something went wrong with that request. Please try again.