Probleme mit Start eines Remote-Services

  • 4 Antworten
  • Letztes Antwortdatum
blackfire185

blackfire185

Stamm-User
40
Hallo,
ich habe eine App, die über einen Remote Service verfügen soll, der mit einem Timer alle paar Stunden Informationen von einer Webseite holt. Da gute Tutorials in diesem Gebiet rar sind, habe ich das kostenlose Buch als Turorial benutzt. Allerdings funktioniert es nicht so wie es sollte und ich hab da noch ein paar fragen:

Also ich erstelle einen Remote Service
(Dieser soll zu Testzwecken erst mal alle Interval eine Benachrichtigung schicken)
Code:
import java.util.Timer;
//...
public class Updateremote extends Service {
	private Timer timer = new Timer();

    @Override
    public void onCreate() {
    	startservice();   
    }
    
    @Override
    public void onDestroy(){
    	stopservice();
    }

    
    private void startservice() {

    	timer.scheduleAtFixedRate( new TimerTask() {

    	public void run() {

    		NotificationManager notMan = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    		showNotification("Neugikeit", false, 0);

    	}

    	}, 0, 1000*2); //Intervallzeit

    	; }
    
    private void showNotification(String text, boolean ongoing, int id){
    	Notification notification = new Notification(android.R.drawable.stat_notify_sync, text,System.currentTimeMillis());
    	notification.flags = Notification.FLAG_AUTO_CANCEL;
    	PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0,
    			new Intent(getApplicationContext(),MainActivity.class),
    			PendingIntent.FLAG_UPDATE_CURRENT);
	}

	private void stopservice() {

    	if (timer != null){

    	timer.cancel();

    	}

    	}
    
	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return updateBinder;
	}

    
	private final IUpdateRemoteService.Stub updateBinder = new IUpdateRemoteService.Stub() {
		
		public String gettimealsString() throws RemoteException {
			String UpdateTime = "gestern";
			return UpdateTime;
		}
	};
}

Dieser ist im Manifest deklariert:

Code:
<service android:name="Updateremote"
            	 android:process=".remote">
            <intent-filter >
                <action android:name="de.test.IUpdateRemoteService"/>
            </intent-filter>
            
       		 </service>

In der Startseite aktivity soll das Ganze aufgerufen werden
Code:
public class Startseite extends Activity {

private IUpdateRemoteService mUpdateRemoteService;

	@Override
    public void onCreate(Bundle savedInstanceState) {
      //...
        Intent intent = new Intent(IUpdateRemoteService.class.getName());
        bindService(intent, UpdateRemoteServiceVerbindung, Context.BIND_AUTO_CREATE);
    }
   

    
    private ServiceConnection UpdateRemoteServiceVerbindung = new ServiceConnection(){

		public void onServiceConnected(ComponentName className, IBinder binder) {
			// TODO Auto-generated method stub
			mUpdateRemoteService = IUpdateRemoteService.Stub.asInterface(binder);
			
		}

		public void onServiceDisconnected(ComponentName className) {
			// TODO Auto-generated method stub
			
		}
    	
    
    
    
    };
}

und dann habe ich noch eine Datei mit erweiterung .aidl unter test>src>de.test

Code:
package de.test;

interface IUpdateRemoteService{
String gettimealsString();
}
Der Service wird allerdings nicht gestartet. Es gibt keine Fehlermeldung oder ähnliches

Nun meine Fragen.

1. Die Startaktivity läuft in einem Tabhost. Ist das ein Problem?
2. Was läuft da schief?
3. Kann man in einem Service überhaupt so eine Notification machen oder braucht man da ein speziellen Weg.
4. In dem Buch wird ebenfalls noch über Asyncrone Prozesse geredet. Ist das jetzt einer, bei dem die aufrufende Activity weiterläuft oder wartet die hier so lange, bis der Service durchlaufen ist?
5. In einem Service kann man ja AsyncTask bzw. Handler nutzen?
6. Habe ich die AIDL Datei richtig angeleget?

Ich hoffe ihr könnt mir helfen oder noch besser, ein besseres Turorial vorschlagen.

Danke

mfg
 
Ich kann dir da das Buch empfehlen:
Android Development
four-to-free guarantee link anklicken und version 3.4 runterladen
Ab Kapitel 30 geht es um Services.
 
  • Danke
Reaktionen: blackfire185
Danke aber in dem buch wird nur auf den lokalen service eingegangen ich brauche aberer einen, der die lebensdauer der main activity ueberdauert.

Gesendet von meinem GT-S5660 mit der Android-Hilfe.de App
 
Die Lebensdauer des Service hängt nur davon ab wie du in startest nicht ob die Main activity gerade läuft oder nicht, dabei ist es egal ob es ein lokaler oder ein remote service ist. Wenn du den Service mit startService() startest bevor du bindService() benutzt, dann bleibt der Service am Leben bis stopSelf() oder stopService() aufgerufen wird. Unabhängig davon ob die Main Activity noch läuft.
 
  • Danke
Reaktionen: blackfire185
Das wird im Android Buch dann ganz anders dargestellt. Da steht man soll einen Remote Service nehmen, wenn er die Lebensdauer der Main überstehen soll.
Danke ich werde es mal probieren und melde mich dann wieder.
 

Ähnliche Themen

D
Antworten
5
Aufrufe
595
swa00
swa00
Zurück
Oben Unten