我需要在应用程序关闭后启动连接 - 调用onDestroy()并且应用程序不再可见。
MainActivity在
中启动服务@Override
public void onCreate(Bundle savedInstanceState){
if(savedInstanceState == null) {
startService(new Intent(MainActivity.this, MqttService.class));
}
该服务通过AsyncTask启动MQTT连接。
@Override
public int onStartCommand(Intent intent, int flags, int startId){
Notification note = createNotification();
//startForeground(20, note);
new MqttTask().execute(CONNECT_RETRIES);
return START_REDELIVER_INTENT;
}
只要应用程序保持活动状态,MQTT连接就会保持活动状态,因为服务也已准备就绪。该服务还实现了一些我需要使用的回调方法,特别是:
@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
我的目标是即使在应用程序关闭时也允许连接处于活动状态,这样用户就可以通过连接接收消息而无需打开应用程序。我想这个想法是在应用程序被销毁时重新连接
我尝试了什么:
1)我不喜欢这个解决方案,因为它虽然有效但却为用户提供了烦人的通知
startForeground(23, createNotification());
2)我尝试使用AlarmManager在一定的时间间隔内调用startService(MqttService.class),但根据最佳实践,不推荐这样做。
3)我看过https://developer.android.com/training/sync-adapters/creating-sync-adapter.html然而这似乎更像是“连接一次”,而不是一个持续的和已建立的联系。
有什么想法吗?
答案 0 :(得分:0)
您是否看过Paho Android服务,而不是编写自己的服务?
https://eclipse.org/paho/clients/android/
这应该在后台运行并保持运行直到它被明确杀死。
此外,如果您想继续使用自己的服务,那么您应该看看上一个问题。