Jetzt registrieren » Login
« Login

Passwort vergessen?

Du bist hier: Android Forum » Android Developer Forum » Android Entwickler Forum » Versändnisfrage - BroadCast, Service - Funktion - Lösung
Gehe zu: Neue Beiträge | Eigene Threads | Beobachtete Threads

Versändnisfrage - BroadCast, Service - Funktion - Lösung

Um aktiv im Android Forum teilnehmen zu können, musst Du Dich bei AndroidPIT registriert haben.

User-Foto
Martin Grulichde

Rang: Schülersprecher

Beiträge: 55

Eintrittsdatum: 14.12.2009

Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 19.04.2011 15:18:56
Hallo Leute,

ich habe inzwischen einige Zeit damit verbracht zu Googlen.

Erstmal zu meiner Situation.
Im grunde möchte ich zyklisch im Hintergrund prüfen ob neue Eintrage in einer externen Datenbank sind, die ich mir via JSON von einem http-Server hole.

Nun soll dies natürlich in erster Linie im Hintergrund geschehen, da dafür ja keine Interaktion vom Nutzer notwendig ist.
Hintergrundaktivitäten führe ich meines Wissen entweder mit einem Thread oder mit einem Service.

Nun möchte ich sowohl bei einem Neustart des Smartphones zyklisch im Hintergrund diese Abfrage durchführen, als auch nach Änderungen in den Einstellungen (z.B. Intervall oder ähnliches) diesen Service (neu) starten.

Bisher starte ich meinen Timer mit dem Alarmmanager (alarmManager.setRepeating) nach die Einstellungen geändert wurden.
Nur wie mache ich das aus meinem Broadcastreceiver heraus in Kombination eines "Service"es, den ich bis dato nicht verwendet habe, da ich dies bisher in einem Thread gelöst habe und ich mit dem Service bisher nicht gearbeitet habe und mir die ganzen Tutorials irgendwie nicht so recht weiterhelfen.

Danke & Gruß Martin
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Gelöschter Account
RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 19.04.2011 16:12:02
Es gibt mehrere Optionen. Eine davon:

Du trägst den Service im Manifest ein damit er beim Boot sofort loslegt. Dazu benötigt er einen IntentFilter. Der Service läuft autark von Deiner App, könnte wiederum einen Timer verwenden und kümmert sich dann zyklisch um das Abholen der Daten und das Verarbeiten der Daten (z.B. Datenbank?). Zugleich könnte der Service auch ein BroadcastReceiver sein damit man ihm veränderte Einstellungen mitteilen kann.

Der Service könnte einen Eintrag im NotificationBar anlegen über den dann eine bestimmte Activity Deiner App aktiviert werden könnte.

Activities Deiner App könnten wiederum BroadcastReceiver sein um Daten, die vom Service verschickt wurden, anzeigen zu können.

Das alles ist eigentlich nicht viel Arbeit und nicht übermäßig kompliziert. Man muß sich nur einmal zurücklehnen und überlegen was man eigentlich alles will und welcher App-Teil was machen soll. Alternativen gibt es zum Beispiel im Verwenden von Bindern (statt Broadcasts), im Starten des Service durch eine Activity statt durch das System, etc. etc.

Gruß
Harald

-----
Tankbuch Mobil | Wuala Music Player | Wuala Sync | GaCoMo

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Markus B.de
Google Plus

Rang: Android Doc

Beiträge: 384

Eintrittsdatum: 22.11.2010

RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 20.04.2011 00:22:21
Hi,
ich habe mal ein kleines Remote Service Beispiel zusammen getippt.
Das Beispiel besteht aus einer Activity und einem RemoteService. Die Activity kann per Button den Service starten, stoppen und eine Variable vom Service abfragen. Alles in allem nichts wirklich wildes aber evtl. hilft es dir in die Materie besser einzusteigen.
Sollten sich fragen ergeben melde dich einfach :)

Gruß,
Markus

-----
!!! BAZINGA !!!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Stefan S.de
Google Plus Twitter

Rang: Android Prof

Beiträge: 425

Eintrittsdatum: 10.11.2009

RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 20.04.2011 11:08:10
Markus B.
Hi,
ich habe mal ein kleines Remote Service Beispiel zusammen getippt.
Das Beispiel besteht aus einer Activity und einem RemoteService. Die Activity kann per Button den Service starten, stoppen und eine Variable vom Service abfragen. Alles in allem nichts wirklich wildes aber evtl. hilft es dir in die Materie besser einzusteigen.
Sollten sich fragen ergeben melde dich einfach :)

Gruß,
Markus

Danke für deine Mühe! So was habe ich gesucht.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Martin Grulichde

Rang: Schülersprecher

Beiträge: 55

Eintrittsdatum: 14.12.2009

RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 22.04.2011 13:10:09
Nun habe ich ein wenig mit dem Servie rumprobiert und stehe nun vor folgendem Problem:

Ich habe in in meinem Service folgendes in der OnCreate stehen:
1@Override
2 public void onCreate() {
3 super.onCreate();
4 Log.d("MyApp", "Service created !");
5 /*preferences =
6 getSharedPreferences(
7 getPackageName()+"_preferences",
8 MODE_PRIVATE);*/
9 preferences =
10 getSharedPreferences(
11 getPackageName()+"_preferences",
12 MODE_PRIVATE);
13 Log.d("MyApp", "Service get Preference-Handler");
14 Boolean pref_auto_update = preferences.getBoolean("auto_update", false);
15 Integer pref_auto_update_interval = preferences.getInt("auto_update_interval", 10);
16 Log.d("MyApp", "Service getted Prefs");
17 INTERVAL = pref_auto_update_interval*1000;
Doch nach "Log.d("MyApp", "Service get Preference-Handler");" hängt sich die App weg und kommt nicht mehr dazu "Log.d("MyApp", "Service getted Prefs");" zu machen. Nur fine ich meinen Fehler nicht, hat jemand eine Idee ?

Danke & Gruß Martin
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Markus B.de
Google Plus

Rang: Android Doc

Beiträge: 384

Eintrittsdatum: 22.11.2010

RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 22.04.2011 23:03:54
Hi,
hast du mal den Stacktrace von dem entsprechenden Absturz ?

Gruß,
Markus

-----
!!! BAZINGA !!!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Martin Grulichde

Rang: Schülersprecher

Beiträge: 55

Eintrittsdatum: 14.12.2009

RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 22.04.2011 23:11:18
Hi der Stacktrace sieht folgendermaßen aus:
1DalvikVM[localhost:8611]
2 Thread [<3> main] (Suspended (exception RuntimeException))
3 ActivityThread.handleCreateService(ActivityThread$CreateServiceData) line: 2790
4 ActivityThread.access$3200(ActivityThread, ActivityThread$CreateServiceData) line: 119
5 ActivityThread$CreateServiceData(ActivityThread$H).handleMessage(Message) line: 1917
6 ActivityThread$H(Handler).dispatchMessage(Message) line: 99
7 Looper.loop() line: 123
8 ActivityThread.main(String[]) line: 4363
9 Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
10 Method.invoke(Object, Object...) line: 521
11 ZygoteInit$MethodAndArgsCaller.run() line: 860
12 ZygoteInit.main(String[]) line: 618
13 NativeStart.main(String[]) line: not available [native method]
14 Thread [<13> Binder Thread #2] (Running)
15 Thread [<11> Binder Thread #1] (Running)
16 Thread [<15> Timer-0] (Running)
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Markus B.de
Google Plus

Rang: Android Doc

Beiträge: 384

Eintrittsdatum: 22.11.2010

RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 22.04.2011 23:18:28 — geändert am 22.04.2011 23:23:16
Hmmmmm, das ist doch nicht der stacktrace des Fehlers ?
Ich hätte nun sowas in dieser Richtung erwartet:
104-22 23:06:29.814: ERROR/AndroidRuntime(2530): FATAL EXCEPTION: main
2 java.lang.RuntimeException: Unable to instantiate service com.example.MyServiceImpl: java.lang.NullPointerException
3 at android.app.ActivityThread.handleCreateService(ActivityThread.java:1929) .....

Interessant wäre es zu wissen wie du "preferences" initialisiert hast.
1preferences =
2 getSharedPreferences(
3 getPackageName()+"_preferences",
4 MODE_PRIVATE);

Das folgender Code bei mir funktioniert:
1final SharedPreferences preferences =
2 getSharedPreferences(
3 getPackageName() + "_preferences",
4 MODE_PRIVATE);


Gruß,
Markus

-----
!!! BAZINGA !!!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Martin Grulichde

Rang: Schülersprecher

Beiträge: 55

Eintrittsdatum: 14.12.2009

RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 22.04.2011 23:23:05
Wenn ich das mit einem Try-Catch umschiffe, kommt dabei folgendes raus:
104-22 21:22:12.691: DEBUG/EI112(245): java.lang.ClassCastException: java.lang.String
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Markus B.de
Google Plus

Rang: Android Doc

Beiträge: 384

Eintrittsdatum: 22.11.2010

RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 22.04.2011 23:42:54 — geändert am 22.04.2011 23:43:59
Okay, das könnte folgendes Problem sein:

Was genau speicherst du denn via SharedPreference ?
Mit diesem Mechanismus ist es z.B. nicht möglich Objekte (bezogen auf eigene Objekte), Byte-Arrays, Bilder, Fotos ect. zu speichern.
Wenn du dann dort z.B. ein Objekt speicherst, würde die ClassCastException Sinn ergeben.

Gruß,
Markus

-----
!!! BAZINGA !!!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Martin Grulichde

Rang: Schülersprecher

Beiträge: 55

Eintrittsdatum: 14.12.2009

RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 23.04.2011 00:06:14
An sich nichts nennenswerte,
da sind ein paar Checkboxen definiert, 2 ListPreferences und eine RingtonePreference.
1<?xml version="1.0" encoding="utf-8"?>
2<PreferenceScreen
3 xmlns:android="http://schemas.android.com/apk/res/android">
4 <PreferenceCategory
5 android:title="@string/txt_preferences_update_title">
6 <CheckBoxPreference
7 android:title="@string/txt_preferences_auto_update_title"
8 android:summary="@string/txt_preferences_auto_update_summary"
9 android:key="auto_update" />
10 <ListPreference
11 android:title="@string/txt_preferences_auto_update_interval_title"
12 android:summary="@string/txt_preferences_auto_update_interval_summary"
13 android:key="auto_update_interval"
14 android:entries="@array/auto_update_interval"
15 android:entryValues="@array/auto_update_interval_values"
16 android:defaultValue="10" />
17 </PreferenceCategory>
18 <PreferenceCategory
19 android:title="@string/txt_preferences_notification_title">
20 <CheckBoxPreference
21 android:title="@string/txt_preferences_notification"
22 android:summary="@string/txt_preferences_notification_summary"
23 android:key="notification" />
24 <CheckBoxPreference
25 android:title="@string/txt_preferences_update_sound"
26 android:dependency="notification"
27 android:summary="@string/txt_preferences_update_sound_summary"
28 android:key="update_sound" />
29 <CheckBoxPreference
30 android:title="@string/txt_preferences_update_vibrate"
31 android:dependency="notification"
32 android:summary="@string/txt_preferences_update_vibrate_summary"
33 android:key="update_vibrate" />
34 <RingtonePreference
35 android:title="@string/txt_preferences_ringtone"
36 android:key="Ringtone"
37 android:dependency="notification"
38 android:summary=""
39 android:ringtoneType="notification" />
40 </PreferenceCategory>
41 <PreferenceCategory
42 android:title="@string/txt_preferences_behavior_title">
43 <CheckBoxPreference
44 android:title="@string/txt_preferences_behavior_hide_read_title"
45 android:summary="@string/txt_preferences_behavior_hide_read_summary"
46 android:key="hide_read" />
47 <CheckBoxPreference
48 android:title="@string/txt_preferences_behavior_load_complete_title"
49 android:summary="@string/txt_preferences_behavior_load_complete_summary"
50 android:key="load_complete" />
51 <ListPreference
52 android:title="@string/txt_preferences_reports_max_count"
53 android:summary="@string/txt_preferences_reports_max_count_summary"
54 android:key="reports_max_count"
55 android:entries="@array/reports_max_count"
56 android:entryValues="@array/reports_max_count_values"
57 android:defaultValue="20" />
58 </PreferenceCategory>
59</PreferenceScreen>
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Markus B.de
Google Plus

Rang: Android Doc

Beiträge: 384

Eintrittsdatum: 22.11.2010

RE: Versändnisfrage - BroadCast, Service - Funktion - Lösung
verfasst am 23.04.2011 01:42:21
Tja, dann weiß ich so nun auch nicht wirklich weiter ...
Kannst du mir dein Projekt irgendwie zukommen lassen via mail oder so ?

Gruß,
Markus

-----
!!! BAZINGA !!!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
Du bist hier: Android Forum » Android Developer Forum » Android Entwickler Forum » Versändnisfrage - BroadCast, Service - Funktion - Lösung
Gehe zu: Neue Beiträge | Eigene Threads | Beobachtete Threads

AndroidPIT unterstützen

Gefällt Dir AndroidPIT? Wir freuen uns, wenn Du uns unterstützt. Wie das geht? Klicke einfach auf die unten stehenden Links.

Weiterempfehlen

Gefällt Dir AndroidPIT? Dann empfiehl uns bitte weiter!

Fragen / Hilfe

Du hast Fragen zu AndroidPIT oder willst noch mehr erfahren? Diese Links helfen Dir vielleicht weiter...

  Du liest gerade: Versändnisfrage - BroadCast, Service - Funktion - Lösung - Android Forum - AndroidPIT. Alle Zeitangaben in UTC+02:00. Es ist jetzt 19:16 Uhr.