1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Problem mit dem beenden einer App :(

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von sebush, 27.05.2012.

  1. sebush, 27.05.2012 #1
    sebush

    sebush Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    04.03.2012
    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 :)
     
  2. Fr4gg0r, 28.05.2012 #2
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    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.
     
  3. maniac103, 28.05.2012 #3
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Was genau läuft denn 'irgendwie' weiter? In anderen Worten: Was genau ist denn das Problem?

    Gesendet von meinem MB525 mit Tapatalk 2
     
  4. sebush, 28.05.2012 #4
    sebush

    sebush Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    04.03.2012
    @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.
     
  5. maniac103, 29.05.2012 #5
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Woran genau machst du das an der Stelle fest?

    Gesendet von meinem MB525 mit Tapatalk 2
     
  6. sebush, 29.05.2012 #6
    sebush

    sebush Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    04.03.2012
    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 ...
     
  7. mradlmaier, 30.05.2012 #7
    mradlmaier

    mradlmaier Gewerbliches Mitglied

    Beiträge:
    158
    Erhaltene Danke:
    17
    Registriert seit:
    28.10.2011
    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...?
     
  8. sebush, 30.05.2012 #8
    sebush

    sebush Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    04.03.2012
    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 :(
     
  9. maniac103, 31.05.2012 #9
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Und was steht in den Details deiner App in der Verbrauchsstatistik? CPU? GPS? Wakelock?

    Gesendet von meinem MB525 mit Tapatalk 2
     
  10. sebush, 04.06.2012 #10
    sebush

    sebush Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    04.03.2012
    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)
     

Diese Seite empfehlen