Service - erstellt sich selber neu

  • 3 Antworten
  • Letztes Antwortdatum
I

inv3

Neues Mitglied
0
hi jungs,

versuche gerade ein Service aufzustellen, dass sich nicht wieder selber neu erstellt, wenn man die Acitivity zerstört.

Der Service funktioniert einwandfrei. Aber nur bei einer stelle hakt es.

Ich starte die App und starte den Service. Wenn ich nun die App schliesse (zerstöre) bleibt der Service kurz stehen und erstellt sich neu.

Dies will ich aber vermeiden.

Habe schon bei onStop() -> unbindService versucht. Leider ohne erfolgt.

Hat einer einen Vorschlag wie ich dieses Problem lösen kann?
 
Dazu wäre es gut zu sehen wie du den Service überhaupt erstellt hast.
 
Service Class:

Code:
public class MyServiceImpl extends Service
{	
    private static final String TAG = MyServiceImpl.class.getSimpleName();

    private int _statusCode;

    private Handler _serviceHandler = new Handler();
        
    /**
     * Bei jedem Aufruf wird der _statusCode des Services inkrementiert.
     */
    private Runnable _editStatusCode = new Runnable()
    {    	
	@Override
	public void run()
        {
            _statusCode++;
            _serviceHandler.postDelayed(this, 1000);
            Log.v( TAG , "run() - statusCode : " + _statusCode );                        
        }
    };
    
    @Override
    public void onCreate() 
    {    	
        _statusCode = 1;
        _serviceHandler.postDelayed(_editStatusCode, 0);
    }

    @Override
    public IBinder onBind(final Intent intent)
    {
        return _myService;
    }
    
    @Override
    public void onDestroy(){    	
        _serviceHandler.removeCallbacks(_editStatusCode);
    }
}


Main Class - Service Data:

Code:
private static boolean _isServiceRunning; // Flag ob der entsprechende Serivce gerade läuft.
private static boolean _isServiceBinding = false;

private static MyService _myService; // Der Serivce

// Verbindung zum Service, welcher gebraucht wird um sich per bindService an diesen zu hängen.
private static ServiceConnection _myServiceConnection = new ServiceConnection()
    {    	
        @Override
	public void onServiceConnected(final ComponentName componentName, final IBinder iBinder)
        {
            _myService = MyService.Stub.asInterface(iBinder);
        }

        @Override
	public void onServiceDisconnected(final ComponentName componentName)
        {
           _myService = null;
        }
    };

// Der Intent-Name auf welchen der Service reagiert.
private static final String SERVICE_INTENT_NAME = "com.test.MyService.RUNNER";
    
final static Intent serviceIntent = new Intent(SERVICE_INTENT_NAME);



     /**
     * Testet an hand des ServiceImpl-Klassennamen, ob dieser schon am laufen ist.
     * @return true wenn der Service noch löuft, sonst false.
     */
    private boolean isServiceRunning()
    {
	final ActivityManager activityManager = (ActivityManager)  getSystemService	(ACTIVITY_SERVICE);
        final List<ActivityManager.RunningServiceInfo> runningServices = activityManager.getRunningServices(Integer.MAX_VALUE);

        for (final ActivityManager.RunningServiceInfo serviceInfo : runningServices)
        {        	
            if (MyServiceImpl.class.getName().equals(serviceInfo.service.getClassName()))
            {
                return true;
            }
        }
        return false;
    }


@Override
public void onResume()
{
	super.onResume();

	_isServiceRunning = isServiceRunning();

	if (_isServiceRunning && !_isServiceBinding) {
	    bindService(serviceIntent, _myServiceConnection, Context.BIND_AUTO_CREATE);
	    _isServiceBinding = true;
	}
}
	
@Override
public void onPause()
{
	super.onPause();

	_isServiceRunning = isServiceRunning();
		
	if (_isServiceRunning && _isServiceBinding)
	{
	    unbindService(_myServiceConnection);
	    _isServiceBinding = false;
	}
}


Den Service starte ich mit:

Code:
if(!_isServiceRunning) {
     startService(serviceIntent);
     bindService(serviceIntent, _myServiceConnection,   Context.BIND_AUTO_CREATE);
_isServiceRunning = true;
}
 
hat keiner eine Lösung dafür ?
 

Ähnliche Themen

AnnaBauer21
Antworten
14
Aufrufe
1.179
AnnaBauer21
AnnaBauer21
S
Antworten
7
Aufrufe
1.142
Silvasurf
S
Zurück
Oben Unten