2016-10-01 61 views
1

删除我有一个类 “ConnectivityChangeReceiver” 类,它扩展了BroadcastReceiver:广播接收器不工作时,应用程序从最近的应用程序列表

public class ConnectivityChangeReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    Intent intentPostTelemetry = new Intent(context.getApplicationContext(), PostTelemetryData.class); 
    intentPostTelemetry.putExtra("isNetworkConnected", isConnected(context)); 
    context.startService(intentPostTelemetry); 
} 

public boolean isConnected(Context context) { 
    ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)); 
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); 
    return networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected(); 
} 

}

这ConnectivityChangeReceiver类调用PostTemetryData

public class PostTelemetryData extends IntentService { 

public PostTelemetryData() { 
    super("PostTelemetryData"); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 

    Bundle extras = intent.getExtras(); 
    boolean isNetworkConnected = extras.getBoolean("isNetworkConnected"); 
    if (isNetworkConnected == true) { 
     SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("TelemetryInfo", 0); 
     String telemetryDetailsInfo = sharedPreferences.getString("TelemetryDetailsInfo", null); 
     if (telemetryDetailsInfo != null && !telemetryDetailsInfo.isEmpty()) { 
      saveTelemetryData(telemetryDetailsInfo); 
     } 
    } 
    // your code 

}} 

在清单中,我添加以下代码:

<receiver android:name=".ConnectivityChangeReceiver"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
    </receiver> 
    <service android:name=".PostTelemetryData"/> 

此连接接收器在连接更改时启动。 当应用程序正在运行时,一切工作正常。但当应用程序关闭并从最近的应用程序列表中删除时,然后广播接收器不工作所以我不能保存数据。所以请帮助我摆脱这种情况。 在此先感谢。

回答

0

问题可能是您的设备在onReceive()完成后要进入睡眠状态,因此您的IntentService无法执行其操作。

尝试使用此 - https://github.com/commonsguy/cwac-wakeful

更简单地说,我们获得激活锁定在的onReceive()广播接收器的方法,然后启动服务并释放激活锁定在IntentService的onHandleIntent()方法。

让我知道这是否工作。

0

你真的不能做你想做的事情。没有办法让应用程序永远运行,并且只能在应用程序运行的地方捕获ACTION_BATTERY_*

+0

那么这个问题的解决方法是什么。 – Ankon

相关问题