App im Speicher belassen

  • Antworten:11
Julia Keller
  • Forum-Beiträge: 8

20.03.2012, 21:14:55 via Website

Hallo Androiden....

Ich habe momentan das Problem, dass meine App, die als Launcher funkiert, nach einiger Zeit neu geladen wird, da diese aus dem Speicher fliegt. Hat jemand eine Idee oder einen Code-Schnippsel, mit dem man die App im Speicher belassen kann?

Lg Julia

Antworten
Florian B.
  • Forum-Beiträge: 284

20.03.2012, 23:02:26 via Website

Das ist das normale Verhalten von Android. Wenn eine App im Hintergrund ist, und der Speicher knapp wird, dann wird sie von Android geschlossen, da sie aktuell nicht verwendet wird. Der Enwickler selbst ist dafür verantwortlich den Zustand wieder her zu stellen, wenn die App dann wieder gestartet wird. Damit schaut es für den User so aus, als wäre die App nie gestoppt worden.

Wenn deine App wirklich im Hintergrund irgendwas machen soll, beispielsweise irgendwas überwachen, dann solltest du dafür einen Service nutzen. Diese werden in der Regel von Android bevorzugt behandelt und bei Speicherbedarf nicht so schnell geschlossen wie eine Activity.

Antworten
Julia Keller
  • Forum-Beiträge: 8

20.03.2012, 23:09:44 via Website

Hallo Florian,

danke für Deine Antwort. Meine App ist/soll allerdings immer im Vordergrund sein. Gibt es nicht die Möglichkeit es so einzustellen, dass die App nie aus dem Speicher geschmissen wird?

Würde es evtl. ausreichen, wenn ich meine App immer im Vordergrund arbeiten lasse? Wenn ja, welche Möglichkeiten gibt es denn?

Antworten
Florian B.
  • Forum-Beiträge: 284

21.03.2012, 09:52:29 via Website

Naja, du solltest und kannst dich eigentlich nicht darauf verlassen, dass die App immer im Vordergrund ist. Es reicht ja schon ein eingehender Telefonanruf aus, der deine App in den Hintergrund verschiebt, und damit besteht schon wieder die Chance, dass die App bei Speicherknappheit geschlossen wird.

Vielleicht solltest du mal kurz erläutern, was deine App machen soll, dann kann man vermutlich besser entscheiden, wie man das Problem angeht.

Antworten
Julia Keller
  • Forum-Beiträge: 8

21.03.2012, 11:54:37 via Website

Das ist ein guter Einwand. Hier mal die Erklärung der ganzen Geschichte:

Meine App wird ausschließlich von mir verwendet, keine öffentliche Verwendung. Die App wird auf einem Pad laufen, dasW-Lan hat, um Daten zu synchronisieren. Andere Apps (bis auf die Standard-Apps) werden mit dem Pad nicht verwendet. Ebenfalls hat das Pad auch Root-Berechtigung.

Mir wäre es am liebsten, wenn man sagen könnte, dass diese App nicht aus dem Speicher geschmissen werden kann.

Ich weiß, ein sehr komisches Thema... :*) Aber vll. hat jemand eine Idee! :-)

Lg Julia

Antworten
Penguin6
  • Forum-Beiträge: 347

24.03.2012, 18:08:22 via App

Ich bin kein Android-Dev, aber die App wird meines Wissens nicht gekillt, wenn der Prozess in der Statusbar angezeigt wird (Bsp. Skype).

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

24.03.2012, 18:29:24 via Website

Setzt das ganze als Service um Julia,

ist im Grund einfach und stellt sicher, dass alles funktioniert. Nachzulesen ist das hier bei Developer.android.com

lg Voss

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

24.03.2012, 21:14:35 via App

Penguin6
Ich bin kein Android-Dev, aber die App wird meines Wissens nicht gekillt, wenn der Prozess in der Statusbar angezeigt wird (Bsp. Skype).
Das ist nicht richtig.

Nur ein Icon in die StatusBar zu setzen reicht keineswegs. Das ganze muss als Service laufen, wenn es nicht gekillt werden soll. Und dann ist egal, ob der Service die Statuszeile für Notifications nutzt oder nicht.

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
Julia Keller
  • Forum-Beiträge: 8

24.03.2012, 21:46:24 via Website

Ihr seid spitze!!! Ich werde es gleich morgen testen! :)

Lg Julia :girl:

Antworten
Julia Keller
  • Forum-Beiträge: 8

25.03.2012, 22:31:05 via Website

So, nun habe ich doch noch eine kleine (Anfänger-)Frage zur Erstellung eines Service....

Reicht es aus, dass man lediglich in der Manifest.xml, die App mit folgender Zeile als Service deklariert und nebenbei ganz normal seine activity laufen lässt?

<service android:enabled="true" android:name=".MyService" />

Lg Julia

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

25.03.2012, 22:46:29 via Website

Nee das reicht nicht aus Julia,

Du musst schon einen eigenen Service implementieren. Steht aber eigentlich alles beschrieben in dem LInk den ich Dir oben schrieb.
public class myService extends Service ..... <- Ein Service

public class myActivity extends Activity .... <- Eine Activity

lg Voss

Antworten
Julia Keller
  • Forum-Beiträge: 8

25.03.2012, 22:59:04 via Website

Entschuldige, habe ich dann weiter unten auch gelesen... :*)

Ich habe es jetzt so gemacht, dass ich einfach neben meiner Activity noch einen Service in die Manfest eingebunden habe und dazu folgenden Code in einer neuen Klasse eingefügt habe:

1package com.beispiel.app;
2
3import android.app.Service;
4import android.content.Intent;
5import android.os.IBinder;
6
7public class BeispielService extends Service {
8 @Override
9 public void onCreate() {
10 startService(new Intent(this, BeispielService.class));
11 }
12 @Override
13 public IBinder onBind(Intent intent) {
14 return null;
15 }
16}

Das sollte ausreichen, oder?

Lg Julia

— geändert am 25.03.2012, 23:00:01

Antworten