Receiver向Activity傳遞數(shù)據(jù)

原創(chuàng)安新小子最后發(fā)布于2019-01-10 17:51:23 閱讀數(shù) 154收藏

展開

今天要寫以后測試的例子,需要在受到廣播以后將一些數(shù)據(jù)傳遞個Activity,除了第三方的EventBus一下子還沒想到好的方法,我們知道Activity想其他組件傳遞數(shù)據(jù),簡單的就使用Intent攜帶過去就好了,但是從Receiver向Activity傳遞數(shù)據(jù)呢,其實可以使用回調(diào)接口。

就像Activity中的button也是使用的回調(diào)接口,Button類就將用戶點擊的響應(yīng)傳遞個了Activity。代碼如下:

class TestBrocastReceiver extends BroadcastReceiver {

private static final String TAG = "TestiBrocastReceiver";

private Info info;

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

Log.e(TAG,"廣播接受者的類型:" + action);

if(info != null){

info.getString(action );

}

}

//回調(diào)接口

interface Info{

void getString(String str);

}

//傳遞回調(diào)對象

public void setInstance(Info info){

this.info= info;

}

}

在Activity中就像實現(xiàn)button點擊的接口一樣

public class TestiActivity extends Activity implements TestBrocastReceiver.Info{

? ? @Override

? ? protected void onCreate(Bundle savedInstanceState) {

? ? ? ? super.onCreate(savedInstanceState);

? ? ? ? setContentView(R.layout.activity_wifi);


? ? ? ? TestBrocastReceiver testBrocaster = new TestBrocastReceiver();

? ? ? ? ? IntentFilter filter = new IntentFilter();

? ? ? ? ? filter.addAction("com.test");//鬧鐘觸發(fā)廣播

? ? ? ? ? this.registerReceiver(testBrocaster, filter);


? ? ? ? ? //因為要這是回調(diào)對象,所以需要使用動態(tài)注冊廣播

? ? ? ? ? testBrocaster .setInstance(this);

? ? }

? ? @Override

? ? public void getString(String str) {

? ? //在這個回調(diào)方法中就獲取到了廣播中傳遞的數(shù)據(jù)了。

? ? ? ? Toast.makeText(WifiActivity.this, str, Toast.LENGTH_LONG).show();

? ? }

}

仔細(xì)看看是不是和實現(xiàn)Button點擊的OnClickListener接口很像,再往下推一步,所有想要向Activity中傳遞數(shù)據(jù)的行為,都可以使用這種回調(diào)接口的方式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容