2013-09-24 39 views
0

我有一個接收器,它將在未來從intentservice接收廣播。 我在我的活動中初始化了接收器。如何獲取內聯廣播接收器的部分喚醒鎖定

有時IntentService需要一段時間才能完成,因此在廣播結果時,手機設備正在休眠,因此不會收到廣播。

我已經確認,即使手機正在睡眠,IntentService運行完成,只有廣播接收器不會收到任何東西。

我知道,我必須以某種方式在某處獲得部分喚醒鎖:(。我是一個在黑暗這個問題。

這是我簡單的活動,唯一相關的唯一部分。

public class NewsActivity extends Activity implements OnDownloadComplete{ 

... 
.. 
.. 



private BroadcastReceiver receiver = new BroadcastReceiver() { 


    @Override 
     public void onReceive(Context context, Intent intent) { 
      .. 
      System.out.println("Called"); // Not printed on logcat if the cell is sleeping 


     } 
     }; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_news); 


    .. 
    .. 

    .. 

    /*LAUNCHING SERVICE*/ 
    Intent intent = new Intent(context, NewsSyncTask.class); 
    intent.putExtra(NewsSyncTask.NOTIFICATION, Footer.this.receiverNotificationClass); 
    context.startService(intent); 





} 

}

請幫助。

回答

0

廣播接收器應該接收廣播,你可以用這種方式第一賴特一個單獨的類訊號分配延長嘗試d與BroadcastReceiver一起在recife標籤下的menifest.xml中聲明您的BroadcastReceiver,您應該設置意向過濾器,以便它只應監聽您的意向服務的廣播。

使用帶有_WAKEUP風格警報的AlarmManager。這是一個sample project說明它的使用(以及你需要的WakefulIntentService,以確保設備在網絡I/O期間不會重新入睡)。

+0

你建議外在清單中的接收器應該能夠解決這個問題的聲明? 。 我不確定是否需要啓動一個WakefulIntentService,正如我所說的,我可以看到IS運行完畢,手機正在睡眠。但你仍然認爲我應該看看這個? –

0

嘗試這樣:

MainActivity:

PowerManager pm = (PowerManager) this 
      .getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wl = pm.newWakeLock(
      PowerManager.PARTIAL_WAKE_LOCK, ""); 
    wl.acquire(); 

    //Start the Service 

    wl.release(); 
+0

謝謝。我會試一試並回復你。 –