我有一个类“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 :(得分:0)
问题可能是你的设备在onReceive()完成后会进入休眠状态,因此你的IntentService无法做到这一点。
尝试使用此功能 - https://github.com/commonsguy/cwac-wakeful
更简单地说,我们在BroadcastReceiver的onReceive()方法中获取WakeLock,然后启动服务并在IntentService的onHandleIntent()方法中释放wakelock。
如果有效,请告诉我。
答案 1 :(得分:0)
你真的不能做你想做的事。没有办法让您的应用程序永远运行,并且您只能抓住运行应用程序的ACTION_BATTERY_*
。