android запуск активности из службы
Android:
public class LocationService extends Service {
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
startActivity(new Intent(this, activity.class));
}
}
я запустил этот сервис с Activity
на Activity
если условие удовлетворяет start
startService(new Intent(WozzonActivity.this, LocationService.class));
от меня LocationService
говорилось выше, не удалось запустить Activity
, Как я могу получить контекст текущего работает Activity
в классе обслуживания?
6 ответов:
изнутри класса обслуживания:
Intent dialogIntent = new Intent(this, MyActivity.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(dialogIntent);
у меня была та же проблема, и я хочу, чтобы вы знали, что ни один из вышеперечисленных не работал для меня. То, что сработало для меня было:
Intent dialogIntent = new Intent(this, myActivity.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(dialogIntent);
и в одном из моих подклассов, хранящихся в отдельном файле мне пришлось:
public static Service myService; myService = this; new SubService(myService); Intent dialogIntent = new Intent(myService, myActivity.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); myService.startActivity(dialogIntent);
все остальные ответы дали мне
nullpointerexception
.
еще одна вещь, о которой стоит упомянуть: хотя ответ выше работает просто отлично, когда наша задача находится в фоновом режиме, единственный способ, которым я мог бы заставить его работать, если бы наша задача (выполненная из службы + некоторые действия) была на переднем плане (т. е. одна из наших действий, видимых пользователю) была такой:
Intent intent = new Intent(storedActivity, MyActivity.class); intent.setAction(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); storedActivity.startActivity(intent);
Я не знаю, имеют ли ACTION_VIEW или FLAG_ACTIVITY_NEW_TASK какое-либо фактическое использование здесь. Ключ к успеху был
storedActivity.startActivity(intent);
и конечно FLAG_ACTIVITY_REORDER_TO_FRONT для не создавая экземпляр действия снова. Удачи вам!
не работает
Context
наService
; удалось получить (пакет)Context
так:Intent intent = new Intent(getApplicationContext(), SomeActivity.class);
Если вам нужно повторить действие, которое находится в bacgrounde, из вашего сервиса, я предлагаю следующую ссылку. Намерение.FLAG_ACTIVITY_NEW_TASK-это не решение.
событие
вы можете использовать свой собственный класс приложений и звонить оттуда, где вам нужно (особенно не-деятельность).
public class App extends Application { protected static Context context = null; @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); } public static Context getContext() { return context; } }
и зарегистрируйте свой класс приложения:
звоните :<application android:name="yourpackage.App" ...
App.getContext();