2016-04-17 90 views
0

我知道在android上處理傳入短信是可能的,我想即使我作爲初學者也可以做到這一點。但我的問題是:設備鎖定時應用程序是否也會運行?我正在開發一個應用程序,該應用程序在設備收到短信時將文本和發件人的電子郵件發送到特定的電子郵件地址。但是當設備在幾分鐘後鎖定時它也必須工作。什麼是最好的方式來做到這一點,或者它已經通過使用onRecieve方法工作? 感謝您的任何幫助還挺並請善待我很新的編程:dAndroid短信接收和處理

回答

1

它的複雜...

一旦一個應用程序已暫停(即意味着:不顯示在屏幕上),它可能會被Android系統破壞以保留電池或減少CPU/RAM使用量。 所以:不,你沒有保證應用程序仍然活着。

您可以將BroadcastReceiver設置爲您的AndroidManifest.xml,並在您的應用中創建BroadcastReceiver類。將調用onReceive()方法,並且您在類中設置的代碼將被執行。即使該應用在收到短信時仍未運行。

但還有另一個問題:深睡。爲了節省電量,Android設備在幾個小時內不使用設備時會關閉所有電池密集型系統。電池密集型系統包括:Wi-fi和數據。短信從這個列表中排除(但是一些構造者可能包括一個選項,以在深度睡眠中禁用SMS接收,在這種情況下,你沒有選擇,只是警告用戶不要在深度睡眠中禁用SMS接收)。

這意味着實施onReceive()方法是不夠的。您需要喚醒設備以啓用Wifi和數據,以便您發送電子郵件。

所以,爲了避免這個問題,擴展了WakefulBroadcastReceiver。這就像一個「普通」的廣播接收機,但它會喚醒設備,並在代碼完全執行時再讓它休眠。

+0

非常感謝所有這些信息!幫了我很多,我真的很感激!我只需要這個應用程序爲我自己的業務,所以我可以把設置在手機上,但我需要。所以我不會在深度睡眠中禁用SMS接收。那麼我是否做到了這一點,我應該讓你的WakefulBroadcastReceiver才能正常工作? –

+0

這是正確的。只需擴展'WakefulBroadcastReceiver'並將你的代碼放在'onReceive()'方法中。 – doubotis

+0

很好,再次感謝:) –