Problem mit dem beenden einer App :(

S

sebush

Neues Mitglied
0
Hi leutz,

ich bastel gerade an einer app die sich irgendwie nicht so ganz beenden will, und dadurch auch nach dem schließen akku verbraucht.

die app brauch gps und internet.

ich frage die gpsdaten ab und schicke diese mit einem Thread ins Netz. (damit es nicht laggt)

beim schließen (onDestroy) versuche ich alles wieder auf null bzw die anfangswerte zu setzen, nur scheinbar macht die app irgendwie noch irgendetwas weiter.

all meine versuche die app zu beenden schlugen fehl:
Code:
@Override
    protected void onDestroy() {
    	if(gps_on){
    		gps_on = false;
    		mlocManager.removeUpdates(gps_listener);
    	}        
        mlocManager = null;
        resetAllValues(); // setzt alles auf ausgangswerte zurück 
        stopThread();
        
        //this.finish();
        
        //super.onDestroy(); 
        
        //android.os.Process.killProcess(android.os.Process.myPid());
        
        System.runFinalization();
        System.runFinalizersOnExit(true);
        System.exit(0);
    }

    @SuppressWarnings("static-access")
    public void stopThread(){
    	if(is_thread){
    		thread.currentThread().interrupt();    		
    		Thread.currentThread().interrupt(); 
    		//tread.stop();		
    		thread.interrupt();					
			//tread.destroy();
			thread = null;
			is_thread = false;			
		}
    }

gibt es außer finish, System..., und killProcess noch härtere methoden eine app und alles was dazu gehört zu beenden?

wie kann ich erkennen woran das weiterlaufen liegt? (thread, oder was wess ich)

hier mal noch meine inet-connection inkl thread:
Code:
    public void serverData() {
    	final MainActivity self = this;
    	
		server_runnable = new Runnable() {
			public void run() {
				try{
		    		URL url = new URL("http://mydomain.de/index.php?long="+a_long+"&lat="+a_lat); 
		        	URLConnection conn = url.openConnection();
		        	InputStreamReader inputStreamReader = new InputStreamReader(conn.getInputStream());
		        	BufferedReader rd = new BufferedReader(inputStreamReader);
		        	
		        	String line;
		        	positions = new ArrayList<String>();
		    		while ((line = rd.readLine()) != null) {
		    			positions.add(line);
		        	}
		    		line = null;
		    		
		    		rd.close();
		    		rd = null;
		    		
		    		inputStreamReader.close();
		    		inputStreamReader = null;
		    		
		    		conn = null;
		    		url = null;
		    		
		    	}catch(IOException e) {}	
				
				self.stopThread();
				
				try {
					this.finalize();
				} catch (Throwable e) {
					// TODO Auto-generated catch block
					// e.printStackTrace();
				}
			}
		};
		
		stopThread();
				
		thread = new Thread(server_runnable, "serverThread");  
		thread.start();	
		is_thread = true;
    }

ich hoffe ihr könnt mir helfen :)
 
android.os.Process.killProcess(android.os.Process.myPid());

Das sollte deinen Prozess ohne wenn und aber killen.
System.exit() im Prinzip auch, aber die obige Variante ist da sicherer.

finish() schließt die derzeitige Activity, das beendet "bestenfalls" den derzeitigen UI-Thread.
 
Was genau läuft denn 'irgendwie' weiter? In anderen Worten: Was genau ist denn das Problem?

Gesendet von meinem MB525 mit Tapatalk 2
 
@Fr4gg0r: android.os.Process.killProcess(android.os.Process. myPid()); hab ich schon versucht, ändert aber nichts an dem verhalten

@maniac103:
ja wenn ich das wüsste^^
wie bekomm ich das denn raus?
ich kann nur feststellen, dass wenn ich die app beende und dann unter Einstellungen/Telefoninfo/Akkuverbrauch nachschaue, dass eben diese App weiter akku saugt.
 
sebush schrieb:
@maniac103:
ja wenn ich das wüsste^^
wie bekomm ich das denn raus?
ich kann nur feststellen, dass wenn ich die app beende und dann unter Einstellungen/Telefoninfo/Akkuverbrauch nachschaue, dass eben diese App weiter akku saugt.

Woran genau machst du das an der Stelle fest?

Gesendet von meinem MB525 mit Tapatalk 2
 
ich starte die app und beende diese, dann lade ich mein handy auf und zieh das kabel ab. nun sollte ja eig die app keinen akkuverbrauch in dieser statistik haben. tut sie aber leider ... und das auch immer wietder steigend ...
 
mmmmmmm

warum @SuppressWarnings("static-access") ?

das unterdrückt zwar die Warnung und kompiliert, aber es gibt sicherlich einen Grund warum der Kompiler das reklamiert....???

Auf jeden Fall machst Du da was, was Du so nicht machen solltest...

Da ist irgendwo der Entwurf deiner Klassen nicht so wie er sein sollte...?
 
wenn ich raten müsste gibt er mir die warnung aus weil ich die deklaration als:
private volatile Thread thread;
ohne initialwert mache. lösche ich dieses
@SuppressWarnings("static-access")
geht die app aber trotzdem noch ohne probleme durchzuspielen, das eigentliche problem des akkusaugens bleibt aber leider bestehen :(
 
sebush schrieb:
ich starte die app und beende diese, dann lade ich mein handy auf und zieh das kabel ab. nun sollte ja eig die app keinen akkuverbrauch in dieser statistik haben. tut sie aber leider ... und das auch immer wietder steigend ...

Und was steht in den Details deiner App in der Verbrauchsstatistik? CPU? GPS? Wakelock?

Gesendet von meinem MB525 mit Tapatalk 2
 
hmmmm scheinbar ist das nur ein bug meines lgos :)
die cpu und gps zählen in der statistik zumindest nicht weiter hoch...
komischerweiße zeigt mir das der akkuverbrauch zwar immer steigende werte an, aber ich glaube die laufzeit wird nicht beeinflusst (2tage durchgetestet und auch ein sonyericsson als gegenvergleich herangezogen ohne akkuverbrauchsanzeigenänderung)
 

Ähnliche Themen

Manny87
  • Manny87
Antworten
11
Aufrufe
164
swa00
swa00
B
Antworten
4
Aufrufe
487
bb321
B
FabianDev
Antworten
5
Aufrufe
555
swa00
swa00
Zurück
Oben Unten