首页 > 数据库技术 > 详细

sendStickyBroadcast和sendStickyOrderedBroadcast

时间:2016-01-21 23:54:51      阅读:252      评论:0      收藏:0      [点我收藏+]

sendStickyBroadcast和sendStickyOrderedBroadcast

2013年10月02日 ⁄ 綜合 ⁄ 共 3547字 ⁄ 字型大小    ⁄ 評論關閉

sendStickyBroadcast和sendStickyOrderedBroadcast發出的廣播會一直滯留(等待),以便有人註冊這則廣播消息後能儘快的收到這條廣播。其他功能與sendBroadcast相同。但是使用sendStickyBroadcast
發送廣播需要獲得BROADCAST_STICKY permission,如果沒有這個permission則會拋出異常。

 

例子:

  1. package com.android.test;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10.   
  11. public class StickyBroadcastTest extends Activity {  
  12.    
  13.  private Button mSendBroadcast;  
  14.  private Button mSendStickyBroadcast;  
  15.  private Button mNextActivity;  
  16.  private Context mContext;  
  17.    
  18.  private int mStickyBrcCount;  
  19.     
  20.     /** Called when the activity is first created. */  
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.main);  
  25.         mContext = getApplicationContext();  
  26.         mSendBroadcast = (Button)findViewById(R.id.broadcast);  
  27.         mSendStickyBroadcast = (Button)findViewById(R.id.stickybroadcast);  
  28.         mNextActivity = (Button)findViewById(R.id.next_activity);  
  29.           
  30.         mSendBroadcast.setOnClickListener(new OnClickListener() {  
  31.      
  32.    @Override  
  33.    public void onClick(View v) {  
  34.       
  35.     Intent intent = new Intent("com.android.action.broadcast");  
  36.     mContext.sendBroadcast(intent);  
  37.    }  
  38.   });  
  39.           
  40.         mSendStickyBroadcast.setOnClickListener(new OnClickListener() {  
  41.      
  42.    @Override  
  43.    public void onClick(View v) {  
  44.     mStickyBrcCount++;  
  45.     Intent intent = new Intent("com.android.action.sticky.broadcast");  
  46.     intent.putExtra("sent_count", mStickyBrcCount);  
  47.     mContext.sendStickyBroadcast(intent);  
  48.       
  49.    }  
  50.   });    
  51.         mNextActivity.setOnClickListener(new OnClickListener() {  
  52.      
  53.    @Override  
  54.    public void onClick(View v) {  
  55.     Intent intent = new Intent(StickyBroadcastTest.this, MyReceiverActivity.class);  
  56.     startActivity(intent);     
  57.       
  58.    }  
  59.   });  
  60.     }  
  61.   
  62.  @Override  
  63.  protected void onResume() {  
  64.   // TODO Auto-generated method stub   
  65.   super.onResume();  
  66.   mStickyBrcCount = 0;  
  67.  }  
  68.      
  69. }  
  70.   
  71.    
  72. //MyReceiverActivity    
  73. package com.android.test;  
  74.   
  75. import android.app.Activity;  
  76. import android.content.BroadcastReceiver;  
  77. import android.content.Context;  
  78. import android.content.Intent;  
  79. import android.content.IntentFilter;  
  80. import android.os.Bundle;  
  81. import android.util.Log;  
  82.   
  83. public class MyReceiverActivity extends Activity {  
  84.   
  85.  private IntentFilter mIntentFilter;  
  86.  private final static String TAG = "MyReceiverActivity";  
  87.     /** Called when the activity is first created. */  
  88.     @Override  
  89.     public void onCreate(Bundle savedInstanceState) {  
  90.         super.onCreate(savedInstanceState);  
  91.         setContentView(R.layout.broadcast_receiver);  
  92.           
  93.         mIntentFilter = new IntentFilter();     
  94.         mIntentFilter.addAction("com.android.action.broadcast");     
  95.         mIntentFilter.addAction("com.android.action.sticky.broadcast");     
  96.   
  97.     }  
  98.        
  99.  private BroadcastReceiver  mReceiver = new BroadcastReceiver () {  
  100.   @Override  
  101.   public void onReceive(Context context, Intent intent) {  
  102.    final String action = intent.getAction();  
  103.    int count = intent.getIntExtra("sent_count", -1);  
  104.    Log.d(TAG, "action = " + action + "and count = " + count);  
  105.      
  106.    //context.removeStickyBroadcast(intent);   
  107.   }  
  108.  };  
  109.   
  110.  @Override  
  111.  protected void onPause() {  
  112.   // TODO Auto-generated method stub   
  113.   super.onPause();  
  114.   unregisterReceiver(mReceiver);     
  115.   

sendStickyBroadcast和sendStickyOrderedBroadcast

原文:http://www.cnblogs.com/sansansan/p/5149588.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!