Android:
public class LocationService extends Service {
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
startActivity(new Intent(this, activity.class));
}
}
Uruchomiłem tę usługę z Activity
W Activity
razie rozpoczęcia spełnia warunek
startService(new Intent(WozzonActivity.this, LocationService.class));
z mojego LocationService
wyżej wymienionego nie udało się uruchomić Activity
, jak mogę uzyskać kontekst aktualnego działania Activity
w klasie usług?
Miałem ten sam problem i chcę Ci powiedzieć, że żadna z powyższych nie działała dla mnie. U mnie zadziałało:
aw jednej z moich podklas, zapisanych w osobnym pliku, musiałem:
Wszystkie inne odpowiedzi dały mi
nullpointerexception
.źródło
Kolejna rzecz warta wspomnienia: podczas gdy powyższa odpowiedź działa dobrze, gdy nasze zadanie jest w tle, jedyny sposób, w jaki mógłbym to zrobić, gdyby nasze zadanie (złożone z usługi + niektóre czynności) znajdowało się na pierwszym planie (tj. Jedna z naszych działań była widoczna do użytkownika) wyglądało tak:
Nie wiem, czy ACTION_VIEW lub FLAG_ACTIVITY_NEW_TASK są tutaj rzeczywiste. Kluczem do sukcesu był
i oczywiście FLAG_ACTIVITY_REORDER_TO_FRONT za brak ponownego tworzenia instancji działania. Powodzenia!
źródło
nie można używać
Context
zService
; był w stanie uzyskaćContext
podobny pakiet :źródło
FLAG_ACTIVITY_NEW_TASK
flagąNa przemian,
Możesz używać własnej klasy Application i dzwonić z dowolnego miejsca (szczególnie bez aktywności).
I zarejestruj swoją klasę aplikacji:
Wtedy zadzwoń :
źródło
context = getApplicationContext();
context = this;
Jeśli chcesz odwołać działanie, które jest w tle, z twojego serwisu, sugeruję następujący link. Intent.FLAG_ACTIVITY_NEW_TASK nie jest rozwiązaniem.
https://stackoverflow.com/a/8759867/1127429
źródło