Android:
public class LocationService extends Service {
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
startActivity(new Intent(this, activity.class));
}
}
J'ai lancé ce service depuis Activity
Dans le Activity
cas état satisfait commence
startService(new Intent(WozzonActivity.this, LocationService.class));
de mon LocationService
mentionné ci-dessus n'a pas pu démarrer Activity
, comment puis-je obtenir le contexte de l'exécution actuelle Activity
dans la classe de service?
J'ai eu le même problème et je tiens à vous faire savoir qu'aucune des solutions ci-dessus n'a fonctionné pour moi. Ce qui a fonctionné pour moi était:
et dans l'une de mes sous-classes, stockées dans un fichier séparé, je devais:
Toutes les autres réponses m'ont donné un
nullpointerexception
.la source
Une autre chose à mentionner: alors que la réponse ci-dessus fonctionne très bien lorsque notre tâche est en arrière-plan, la seule façon de la faire fonctionner si notre tâche (faite de service + quelques activités) était au premier plan (c'est-à-dire qu'une de nos activités est visible à l'utilisateur) était comme ceci:
Je ne sais pas si ACTION_VIEW ou FLAG_ACTIVITY_NEW_TASK sont d'une utilité réelle ici. La clé du succès était
et bien sûr FLAG_ACTIVITY_REORDER_TO_FRONT pour ne pas instancier à nouveau l'activité. Bonne chance!
la source
on ne peut pas utiliser le
Context
duService
; a pu obtenir le (package)Context
de la même manière:la source
FLAG_ACTIVITY_NEW_TASK
drapeauAlternativement,
Vous pouvez utiliser votre propre classe Application et appeler où que vous soyez (en particulier les non-activités).
Et enregistrez votre classe d'application:
Puis appelez:
la source
context = getApplicationContext();
encontext = this;
Si vous avez besoin de recalculer une activité qui est en bacgrounde, de votre service, je vous suggère le lien suivant. Intent.FLAG_ACTIVITY_NEW_TASK n'est pas la solution.
https://stackoverflow.com/a/8759867/1127429
la source