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)
	
	
	
		
Dieser ist im Manifest deklariert:
	
	
	
		
In der Startseite aktivity soll das Ganze aufgerufen werden
	
	
	
		
und dann habe ich noch eine Datei mit erweiterung .aidl unter test>src>de.test
	
	
	
		
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 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();
}
	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