2017-06-18 30 views
0

我已經做到了這一點:火力地堡數據庫更新不工作時,應用程序最小化

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 

      currentLatitude = Double.valueOf(intent.getStringExtra("latitude")); 
      currentLongitude = Double.valueOf(intent.getStringExtra("longitude")); 


      if(!java.util.Objects.equals(m_Text, "")) {//if ph number not blank 
       User user = new User(); 

       user.setLatitude(currentLatitude); 
       user.setLongitude(currentLongitude); 
       // user.setPhone(m_Text); 
       mFirebaseInstance.getReference(m_Text).setValue(user); 


      } 




     } 
    }; 

預期,不論應用程序是在前臺或不聯合座標被更新,但mFirebaseInstance.getReference(m_Text).setValue(user);不發帖時應用火力地堡被最小化,否則正常工作。有關如何實現它的任何解決方案?

+2

可能是由Doze或[App-Standby]造成的(https://developer.android.com/training/monitoring-device-state/doze-standby.html#understand_app_standby)。當你觀察到這種行爲是插入設備?屏幕在嗎?該設備的API級別是什麼? –

+0

無論是否插入設備(api 24和23均在真實設備上測試過),app都處於前景/活動狀態,或者處於部分休眠狀態,接收機會根據斷點觀察定期收到更新的變量,但只有當應用程序處於前臺時,Firebase方法的更新纔有效......是否有任何解決方法? –

+0

由於這裏沒有專家提出的解決方案,或者它們可能被他們忽略或忽視,所以我想問一下,如果可以的話,我是否可以將整個firebase初始化和方法調用放到後臺服務。任何幫助或例子,也將不勝感激。 –

回答

0

我發現一段時間後的根問題,該應用程序需要設備上的背景數據權限,以便將數據發佈到firebase數據庫,通過Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS意圖啓用它/添加權限,並且它工作正常!