Android開源庫:EventBus

jopen 10年前發布 | 32K 次閱讀 EventBus Android開發 移動開發

EventBus是用于簡化應用中各個部件之間通信的一個庫。比如從一個Activity發送消息到一個正在運行的服務,亦或是片段之間簡單的互動。而下面使用的示例,就是如果網絡連接丟失,該如何通知一個活動:

    public class NetworkStateReceiver extends BroadcastReceiver {

    // post event if there is no Internet connection  
    public void onReceive(Context context, Intent intent) {  
        super.onReceive(context, intent);  
        if(intent.getExtras()!=null) {  
            NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);  
            if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {  
                // there is Internet connection  
            } else if(intent  
                .getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) {  
                // no Internet connection, send network state changed  
                EventBus.getDefault().post(new NetworkStateChanged(false));  
            }  
}  

// event  
public class NetworkStateChanged {  

    private mIsInternetConnected;  

    public NetworkStateChanged(boolean isInternetConnected) {  
        this.mIsInternetConnected = isInternetConnected;  
    }  

    public boolean isInternetConnected() {  
        return this.mIsInternetConnected;  
    }  
}  

public class HomeActivity extends Activity {  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  

        EventBus.getDefault().register(this); // register EventBus  
    }  

    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        EventBus.getDefault().unregister(this); // unregister EventBus  
    }  

    // method that will be called when someone posts an event NetworkStateChanged  
    public void onEventMainThread(NetworkStateChanged event) {  
        if (!event.isInternetConnected()) {  
            Toast.makeText(this, "No Internet connection!", Toast.LENGTH_SHORT).show();  
        }  
    }  

}  </pre> <p><strong>項目主頁:</strong><a href="http://www.baiduhome.net/lib/view/home/1403076978887" rel="nofollow" target="_blank">http://www.baiduhome.net/lib/view/home/1403076978887</a></p>

</span>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!