Служба запуска Android при запуске и другая проблема - PullRequest
1 голос
/ 20 августа 2011

Я уже некоторое время пытаюсь понять это и не могу понять, почему это происходит.Кажется, это было бы просто, но я не могу заставить это работать.

Вот что я хотел бы случиться

Когда я запускаю приложение,1. Если фоновая служба (долго работающая синглтон-служба) не запущена, запустите ее перед началом действия.2. Запустите действие «домашняя страница»

Обновлено 8/20 Вот что происходит:1. Я запускаю приложение, а служба не работает2. Я начинаю намерение (через context.startService)- context.startService вызывается3. Действие заканчивается4. OnStartCommand запускаетсяКак я могу запустить onStartCommand до того, как начнется выполнение действия ??

Любой совет на этот счет избавит от многих разочарований.Я искал на форумах, прежде чем спросить это, но не смог найти ничего, что соответствует моим проблемамБольшое спасибо!

Обновление Спасибо за быстрые ответы.Я должен был упомянуть, что я уже запускаю это из расширения Application (запуска сервиса в методе onCreate).В моей текущей реализации (ниже), вот что происходит для того, чтобы я прошел через приложение.Я думал, что это приведет к запуску службы до начала действия, но действие будет запущено, а затем служба будет запущена.Это главный момент моего замешательства.1. приложение onCreate называется2. метод startService запущен3. запускается начальная деятельность4. сервис onCreate называется- служба onStart никогда не вызывается (вместо этого я попробую onStartCommand, поскольку я не ориентируюсь на старые платформы - спасибо за это предложение, Александр)

    public class MyApp extends Application {

@Override
public final void onCreate()
{

        if(!MyService.isRunning()) // this is a static method with thread lock
        {
            Intent i = new Intent(context, MyService.class);
            i.setAction(MyConstants.INTENT_START_SERVICE);
            context.startService(i);
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 20 августа 2011

Вы можете создать новый класс, который расширяет класс Application .Этот класс будет запускаться до вызова основного действия и только при первом запуске приложения.Здесь вы можете запустить службу до того, как откроется ваша домашняя страница .

0 голосов
/ 20 августа 2011

Спасибо Александру О за его комментарий, который направил меня в правильном направлении к запуску команды onStart.Я до сих пор не могу запустить onStartCommand до начала действия.Какие-либо предложения?Моя проблема заключалась в том, что в моем сервисе были и onStartCommand, и функция onStart.Видимо, я не понимал функцию onStartCommand и думал, что он просто должен был определять тип сервиса (STICKY, NOT_STICKY).Как только я удалил onStart и переместил код onStart в onStartCommand, приложение начало работать.Для тех, кто интересуется, вот в основном то, что я имел.

public class MyService extends Service
{
 ...
    @Override
    public int onStartCommand(Intent intent, int flags, int startId)
    {
            // this was being executed but didn't really do anything
            return Service.START_STICKY;
    }
    ...
    @Override
    public void onStart(Intent intent, int startId)
    {
        // logic that was never executed
        // problem fixed when I removed onStart and moved the code to onStartCommand
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...