
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