Android:
public class LocationService extends Service {
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
startActivity(new Intent(this, activity.class));
}
}
Ich habe diesen Dienst von gestartet Activity
In Activity
wenn Bedingung Start erfüllt
startService(new Intent(WozzonActivity.this, LocationService.class));
von meinem LocationService
oben genannten konnte nicht gestartet werden Activity
, wie kann ich den Kontext der aktuellen Ausführung Activity
in der Serviceklasse erhalten?
Ich hatte das gleiche Problem und möchte Sie wissen lassen, dass keines der oben genannten Probleme bei mir funktioniert hat. Was für mich funktioniert hat war:
und in einer meiner Unterklassen, die in einer separaten Datei gespeichert waren, musste ich:
Alle anderen Antworten gaben mir eine
nullpointerexception
.quelle
Eine weitere erwähnenswerte Sache: Während die obige Antwort gut funktioniert, wenn unsere Aufgabe im Hintergrund ist, könnte ich sie nur dann zum Laufen bringen, wenn unsere Aufgabe (aus Service + einigen Aktivitäten) im Vordergrund steht (dh eine unserer Aktivitäten sichtbar ist) zum Benutzer) war wie folgt:
Ich weiß nicht, ob ACTION_VIEW oder FLAG_ACTIVITY_NEW_TASK hier tatsächlich von Nutzen sind. Der Schlüssel zum Erfolg war
und natürlich FLAG_ACTIVITY_REORDER_TO_FRONT, weil die Aktivität nicht erneut instanziiert wurde. Viel Glück!
quelle
man kann nicht die Verwendung
Context
derService
; konnte das (Paket)Context
gleich bekommen:quelle
FLAG_ACTIVITY_NEW_TASK
FlaggeAbwechselnd,
Sie können Ihre eigene Anwendungsklasse verwenden und von jedem Ort aus anrufen (insbesondere bei Nicht-Aktivitäten).
Und registrieren Sie Ihre Anwendungsklasse:
Dann ruf an :
quelle
context = getApplicationContext();
incontext = this;
Wenn Sie eine Aktivität, die sich in bacgrounde befindet, von Ihrem Dienst zurückrufen müssen, schlage ich den folgenden Link vor. Intent.FLAG_ACTIVITY_NEW_TASK ist nicht die Lösung.
https://stackoverflow.com/a/8759867/1127429
quelle