2016-08-14 77 views
1

我有一個經常上傳設備位置到服務器的應用程序。即使應用程序關閉,也要繼續進行通知

上傳位置是在重複報警中完成的,即使用戶退出應用程序並從最近的應用程序列表中清除,它也能正常工作。

用戶可以通過按下應用程序上的按鈕來停止應用程序上傳位置。

我需要向用戶顯示正在進行的通知,指示該應用程序處於活動狀態,並且當前正在上傳位置。我使用了一個正在進行的通知(NotificationBuilder.setOngoing(true)),但是一旦用戶退出應用程序並將其從最近的應用程序中刪除,該通知就會消失。

我知道保持通知應該是可能的,因爲有這樣做的應用程序。例如,uTorrent應用程序和WiFi ADB應用程序可以做到這一點。

有沒有人知道即使應用程序關閉時也能保留通知的方法?

+0

你能有一個服務在後臺運行? – Eenvincible

回答

0

啓動粘性服務。在用戶(強制)從最近列表中刪除應用程序時關閉應用程序後立即重新啓動該服務。服務也是在啓動設備後直接啓動的,所以粘性通知永遠不會消失。請記住,粘性通知永不消失可能會使一些用戶感到不安。

OngoingNotificationService.class:

public class OngoingNotificationService extends Service { 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     super.onStartCommand(intent, flags, startId); 
     return Service.START_STICKY; 

    } 

    @Override 
    public void onCreate() { 
     // Check if notification should be shown and do so if needed 

    } 
} 

OngoingNotificationServiceStarter.class:

public class OngoingNotificationServiceStarter extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent i = new Intent(context, OngoingNotificationService.class); 
     context.startService(i); 

    } 
} 

的AndroidManifest.xml:

<manifest> 

    ... 

    <application> 

     ... 

     <service android:name=".OngoingNotificationService" /> 

     <receiver android:name=".OngoingNotificationServiceStarterr"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

    </application> 

</manifest> 
相關問題