android 使用广播监听网络状态

参考:http://blog.youkuaiyun.com/androidbluetooth/article/details/7199708

博客 http://blog.youkuaiyun.com/androidbluetooth/article/details/6860146 详细的粘贴了很多判断网络的方法。

网络状态发生变化的时候,系统会发出 android.net.conn.CONNECTIVITY_CHANGE .
下面是实现的 demo :

package mark.zhang;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.IBinder;
import android.util.Log;

public class ListenNetStateService extends Service {
    private ConnectivityManager connectivityManager;
    private NetworkInfo info;

    private BroadcastReceiver mReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
                Log.d("mark", "网络状态已经改变");
                connectivityManager = (ConnectivityManager)      

                                         getSystemService(Context.CONNECTIVITY_SERVICE);
                info = connectivityManager.getActiveNetworkInfo();  
                if(info != null && info.isAvailable()) {
                    String name = info.getTypeName();
                    Log.d("mark", "当前网络名称:" + name);
                } else {
                    Log.d("mark", "没有可用网络");
                }
            }
        }
    };

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        IntentFilter mFilter = new IntentFilter();
        mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(mReceiver, mFilter);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mReceiver);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }
}
在 manifest 文件中需要加上一条权限:
 <</span>uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
回头再看看关于 CONNECTIVITY_ACTION 的介绍,从 api 中,我们还可以得到一个信息:

通过 intent 可以获取一些 EXTRA,如 EXTRA_NO_CONNECTIVITY。

boolean b = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);

更多信息可以参考 ConnectivityManager.

===========================================

在Android操作系统中,如何能够正确的判断我们所连接的网络是否断开恩?今天我们就针对这一应用技巧进行一个详细的分析。
public class ConnectionChangeReceiver extends BroadcastReceiver {   
        @Override   
        public void onReceive( Context context, Intent intent ) {   
            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);   
            NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();   
            NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);   
            if ( activeNetInfo != null ) {   
                Toast.makeText( context, "Active Network Type : " +
                      activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();   
                }   
            if( mobNetInfo != null ) {   
                Toast.makeText( context, "Mobile Network Type : " +
                      mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();   
                }   
          }   
    }  
<</span> !-- Needed to check when the network connection changes -->   

  <</span> uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>   
  <</span> receiver android:name="com.blackboard.androidtest.receiver.ConnectionChangeReceiver"   
             android:label="NetworkConnection">   
      <</span> intent-filter>   
          <</span> action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>   
      <</span> /intent-filter>   
  <</span> /receiver>
<think>好的,我现在需要处理用户关于HTML实体 的提问。首先,用户想了解它的含义和使用场景。根据用户提供的引用内容,我需要整理相关信息,确保回答准确且符合格式要求。 首先, 是HTML中的非换行空格实体,对应unicode的U+00A0。它的主要作用是显示不会被浏览器合并或忽略的空格。这点在引用1、3、4中都有提到,特别是在引用4的例子里,使用多个 可以在网页中显示多个空格,而普通空格会被合并成一个。 接下来要考虑使用场景。根据引用2, 可以防止空元素折叠,比如保持带有边框的div的高度。引用4的例子也说明了在需要多个连续空格时使用。另外,引用3提到在需要输入特殊字符如&时使用实体,类似地, 用于空格。所以使用场景包括保持布局、占位符和特殊格式。 需要注意的是,用户可能混淆其他空格实体,比如普通的空格和全角空格,但根据引用内容, 的特殊性在于其非换行和防合并特性。同时,要提醒用户不要滥用,以免影响排版。 现在要组织回答,确保使用正确的LaTeX格式,内部数学表达式用$...$,独立公式用$$...$$,但这个问题可能不涉及数学公式,所以重点放在清晰的结构和引用上。同时生成相关问题,考虑用户可能进一步想知道与其他空格的区别、替代方法或最佳实践。 最后检查引用是否正确标注,每个引用末尾加上对应的标识,比如[^1]、[^2]等,并确保没有使用markdown格式,段落用空行分隔。回答要使用中文,语言自然,结构清晰。</think>### HTML实体` `的含义与使用场景 ` `是HTML中的**非换行空格实体**(Non-Breaking Space),对应Unicode字符`U+00A0`。其核心作用是强制浏览器显示一个空格,且该空格**不会被合并或忽略**,同时阻止在此处自动换行[^3][^4]。 --- #### 主要特性 1. **防空格合并** 普通连续空格(ASCII空格,`U+0020`)在HTML中默认会被合并为一个。例如: ```html <p>知 识</p> <!-- 网页显示为"知 识" --> <p>知    识</p> <!-- 显示为"知 识" --> ``` 使用` `可保留多个空格。 2. **防元素折叠** 空元素(如无内容的`<div>`)可能因内容缺失导致布局塌陷。例如: ```html <div style="height: 20px; border: 1px solid black"> </div> ``` 添加` `可维持元素高度。 3. **禁止换行** 文本中的` `会强制其前后内容保持在同一行,避免因换行破坏排版(如日期“2023年10月1日”)[^3]。 --- #### 典型应用场景 | 场景 | 示例 | |---------------------|----------------------------------------------------------------------| | 固定多空格 | 表格中对齐、诗歌格式排版 | | 占位符 | 空按钮、占位div防止折叠 | | 特殊格式保留 | 代码示例中模拟缩进 | | 非换行内容 | 单位与数值的组合(如`10 kg`) | --- #### 注意事项 - **避免滥用**:过多使用可能影响响应式布局,建议优先通过CSS(如`white-space: pre`)控制空格行为。 - **与其他空格区别**:` `为“硬空格”,而CSS的`margin/padding`更适合布局调整。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值