Pra*_*ani 16 android deprecated intentfilter broadcastreceiver android-networking
我收到广播接收器的弃用声明的警告.
<!-- NETWORK RECEIVER... -->
<receiver android:name=".utils.NetworkUtils" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
警告:
对于面向N及更高版本的应用,不推荐为android.net.conn.CONNECTIVITY_CHANGE声明广播接收器.通常,应用程序不应该依赖此广播,而应使用JobScheduler或GCMNetworkManager.
没有弃用的方法有没有其他方法可以使用它?
Tah*_*rli 12
我有同样的问题,我做了类似的事情.它对我有用,我希望它有所帮助.
public class NewActivity extends AppCompatActivity {
final static String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
IntentFilter intentFilter;
MyReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
intentFilter = new IntentFilter();
intentFilter.addAction(CONNECTIVITY_ACTION);
receiver = new MyReceiver();
if(checkForInternet()){
loadData();
}else{
updateUI();
}
}
@Override
protected void onResume() {
super.onResume();
registerReceiver(receiver, intentFilter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
// Self explanatory method
public boolean checkForInternet() {
ConnectivityManager cm =
(ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
return activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();
}
void loadData(){
// do sth
}
void updateUI(){
// No internet connection, update the ui and warn the user
}
private class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String actionOfIntent = intent.getAction();
boolean isConnected = checkForInternet();
if(actionOfIntent.equals(CONNECTIVITY_ACTION)){
if(isConnected){
loadData();
}else{
updateUI();
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
不要在清单中添加接收器,以便它只存在于此活动中.
Google 的官方建议是切换到JobScheduler. 由于此功能仅适用于 API 级别 21 及更高版本,因此对于较旧的设备来说这是不行的。
幸运的是,Evernote 的人们创建了一个向后兼容的版本: https: //github.com/evernote/android-job
| 归档时间: |
|
| 查看次数: |
11150 次 |
| 最近记录: |