summaryrefslogtreecommitdiff
path: root/src/com/android/terminal/TerminalService.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/terminal/TerminalService.java')
-rw-r--r--src/com/android/terminal/TerminalService.java30
1 files changed, 13 insertions, 17 deletions
diff --git a/src/com/android/terminal/TerminalService.java b/src/com/android/terminal/TerminalService.java
index ebbdcce..4399390 100644
--- a/src/com/android/terminal/TerminalService.java
+++ b/src/com/android/terminal/TerminalService.java
@@ -20,19 +20,14 @@ import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import android.util.SparseArray;
/**
* Background service that keeps {@link Terminal} instances running and warm
* when UI isn't present.
*/
public class TerminalService extends Service {
- private static final String TAG = "Terminal";
-
- private final ArrayList<Terminal> mTerminals = new ArrayList<Terminal>();
+ private final SparseArray<Terminal> mTerminals = new SparseArray<Terminal>();
public class ServiceBinder extends Binder {
public TerminalService getService() {
@@ -45,28 +40,29 @@ public class TerminalService extends Service {
return new ServiceBinder();
}
- public List<Terminal> getTerminals() {
- return Collections.unmodifiableList(mTerminals);
+ public SparseArray<Terminal> getTerminals() {
+ return mTerminals;
}
- public Terminal createTerminal() {
+ public int createTerminal() {
// If our first terminal, start ourselves as long-lived service
- if (mTerminals.isEmpty()) {
+ if (mTerminals.size() == 0) {
startService(new Intent(this, TerminalService.class));
}
final Terminal term = new Terminal();
term.start();
- mTerminals.add(term);
- return term;
+ mTerminals.put(term.key, term);
+ return term.key;
}
- public void destroyTerminal(Terminal term) {
- term.stop();
- mTerminals.remove(term);
+ public void destroyTerminal(int key) {
+ final Terminal term = mTerminals.get(key);
+ term.destroy();
+ mTerminals.delete(key);
// If our last terminal, tear down long-lived service
- if (mTerminals.isEmpty()) {
+ if (mTerminals.size() == 0) {
stopService(new Intent(this, TerminalService.class));
}
}