2014-12-06 3 views
0

В моей службе приложений я получаю сервер, чтобы получить новое сообщение.Служба Android отключена, когда экран выключен

После того, как вы нашли новое сообщение, мое приложение для сервопривода должно быть на экране и начать работу, чтобы отобразить новое сообщение.

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

начало деятельности по услугам:

public void onCreate (Bundle savedInstanceState) { 
     super.onCreate (savedInstanceState); 
     requestWindowFeature (Window.FEATURE_NO_TITLE); 
     getWindow().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     PowerManager powermanager = ((PowerManager)getBaseContext().getSystemService(Context.POWER_SERVICE)); 
     wakeLock=powermanager.newWakeLock(
       PowerManager.SCREEN_BRIGHT_WAKE_LOCK | 
         PowerManager.ACQUIRE_CAUSES_WAKEUP, "TsmsScreenOn"); 

     wakeLock.acquire (10000); 
     WindowManager.LayoutParams params = getWindow().getAttributes(); 
     params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 
     params.screenBrightness = 1.0f; 
     getWindow().setAttributes(params); 

     setContentView (R.layout.service_view_dialog); 
} 

Моя суммированы служба:

public class ToobaPayamakService extends Service { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
    } 

    @Override 
    public void onStart(Intent intent, int startId) { 
    } 

    private Runnable sendUpdatesToUI = new Runnable() { 
    }; 

    private void DisplayLoggingInfo() { 
    } 

    public int callRequestFromServer(){ 
      if (G.checkInternetConnection()) { 
       try { 
        Cursor c = db.getCursorFirstItemReceived (username); 
        c.moveToFirst(); 
        if (c.moveToFirst()) { 
         receive_lastID = c.getString (c.getColumnIndex ("lastId")); 
        } 
        c.close(); 
        unread = checkWebService (Integer.valueOf (receive_lastID)); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
       Log.e ("unread: ", unread + ""); 
       if (unread != 0) { 
        G.config_username = username; 
        G.config_password = password; 
        try { 
         G.getRequestFromServerByService (Long.parseLong (receive_lastID), unread, contentResolver); 
         result_count = unread; 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     return result_count; 
    } 

    /* ----------------------------------------------------------------------------------------------------------------- notifyTest */ 
    public void notifyTest (int unread) { 
     Intent i = new Intent(); 
     i.setClass (this, ServiceDialog.class); 
     i.putExtra ("username", username); 
     i.putExtra ("password", password); 
     i.putExtra ("unread" , counter); 
     i.putExtra ("notify" , notify); 

     i.setFlags (Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
     i.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity (i); 
    } 
} 
+0

проверить мой отредактированный ответ для получения более подробной информации :) –

ответ

1

Ответ прост: вы должны захватить wakelock в службе.

+0

что значит ? я не недооценил меня. используя wakelock в обслуживании? –

+0

Да, используя wakelock в вашем сервисе – greywolf82

+0

i dont blive any change. –

1

Вы также можете использовать этот флаг, чтобы сохранить экран ON -

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

один больше раствора в использовании Wakelock -

private PowerManager.WakeLock wl; 

Внутри OnCreate -

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
      wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "doneDimScreen"); 

Внутри OnPause -

wl.release(); 

Внутри onResume -

wl.acquire(); 

вы должны добавить это разрешение, а для Wakelock работы -

<uses-permission android:name="android.permission.WAKE_LOCK" /> 

Более подробно о Wakelock см - this

Ура :)

+0

не работает несколько раз.только дважды работа. после того, как экран выключен вручную или автоматически сработал после 30 секунд :( –

+0

и правильно работать, когда телефон подключен к зарядному устройству –

+0

проблема не разрешает :(когда экран отключен от обслуживания, не работает правильно –