Фоновый процесс Android (Сервис) - PullRequest
0 голосов
/ 26 апреля 2011

Я надеюсь, что кто-нибудь имеет представление об этом вопросе, потому что он сводит меня с ума.

У меня есть этот сервис, который я называю IssueNotifier, и в нем есть несколько методов:

public void onCreate()
{
    super.onCreate(); 
    startService();

    //initiate preferences to get values
    prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    choice = Integer.valueOf(prefs.getString("bgProcessPref", "15"));
    delay = choice * minute;
    if (VIEWISSUES_ACTIVITY != null)  
        Log.d(getClass().getSimpleName(), "ServiceTest started");
}

public void onDestroy()
{
    super.onDestroy();
    stopService();
    if (VIEWISSUES_ACTIVITY != null)  
        Log.d(getClass().getSimpleName(), "ServiceTest stopped");
}

private void startService() 
{ 
    final Handler handler = new Handler();
    final Runnable runnable = new Runnable() 
    {
        public void run() 
        {
            if(VIEWISSUES_ACTIVITY.getNewIssues() > 0)
                VIEWISSUES_ACTIVITY.sendNotification();
        }
    };
    timer.scheduleAtFixedRate(new TimerTask() 
    { 
        public void run()
        { 
            handler.post(runnable);
            System.out.println(delay);
        } 

    }, delay, delay);
}

private void stopService()
{
    if(timer != null)
        timer.cancel();
}

VIEWISSUES_ACTIVITY - это еще одна активность, которая запускает эту службу, и у нее есть метод sendNotification (), который уведомляет пользователя о поступлении новых сообщений:

    //just pass the reference to the service
    IssueNotifier.setMainActivity(this);

    //start the service
    startService(new Intent(this, IssueNotifier.class));

Весь этот код работает нормально, но моя проблема в том, что я не хочу, чтобы VIEWISSUES_ACTIVITY запускал этот Сервис, а скорее другое действие, чтобы сделать это, когда я пытаюсь запустить Сервис с другим действием, он не работает, потому что sendNotification () входит в действие VIEWISSUES_ACTIVITY (оно должно быть там). Так как же мне достичь своей цели?

Ответы [ 2 ]

0 голосов
/ 04 октября 2012

Реализовано sendNotification() (мой собственный метод) в Сервисе вместо Активности, это способ сделать это.

0 голосов
/ 16 ноября 2011

попробуй:

Context.startService()
...