【发布时间】:2015-10-03 08:23:14
【问题描述】:
我创建了一个广播接收器来监听连接更改事件。 当我使用主页按钮最小化应用程序时,接收器工作得很好。 但是当我使用后退按钮退出应用程序广播接收器时停止监听连接变化。 我搜索了它,发现我应该从服务中调用广播接收器,但这也不适用于应用程序关闭。 这是我的带有服务的广播接收器的代码。
互联网服务
public class InternetService extends Service {
NetworkChangeReceiver networkChangeReceiver;
public InternetService() {
super();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, filter);
return Service.START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
广播接收器
public class NetworkChangeReceiver extends BroadcastReceiver {
boolean isConnected = false;
@Override
public void onReceive(final Context context, final Intent intent) {
isNetworkAvailable(context);
}
private boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null) {
if (info.isConnected()) {
if (!isConnected) {
isConnected = true;
Toast.makeText(getBaseContext(), "Connected to internet", Toast.LENGTH_LONG).show();
Log.v("Internet", "Internet Connected");
hitDataService();
Intent intent = new Intent(ActivityForm.this, MyService.class);
startService(intent);
}
return true;
}
}
}
isConnected = false;
return false;
}
}
即使在应用关闭且移动设备连接到互联网时,我也想将一些数据发送到服务。 有没有其他方法可以获得相同的行为。
我也尝试在 onCreateMethod() 中添加以下行,但仍然没有成功
ComponentName receiver = new ComponentName(getBaseContext(), NetworkChangeReceiver.class);
PackageManager pm = getBaseContext().getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
【问题讨论】:
-
你的广播接收器是一个活动的内部类?
-
是的,它是一个内部类
-
我会开始在单独的类中移动它或使其成为静态
-
您是否强制关闭您的应用程序
-
不只是做背压
标签: android broadcastreceiver android-intentservice