日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

android 广播观察者,BroadcastReceiver和Activity之间的通信 – android

發(fā)布時間:2025/4/16 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 广播观察者,BroadcastReceiver和Activity之间的通信 – android 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我的應(yīng)用程序中有一個廣播接收器,每次用戶接到來電時都會被觸發(fā).現(xiàn)在,當(dāng)它發(fā)生時,我需要廣播接收器來調(diào)用特定活動中的特定方法.現(xiàn)在,我嘗試將此方法設(shè)置為靜態(tài),因此可用,但有些東西告訴我這是一個非常糟糕的主意.

因此,我嘗試在我的活動中實(shí)例化廣播接收器而不在我的清單中聲明它但問題是 – 當(dāng)應(yīng)用程序關(guān)閉時,活動不存在,因此我無法調(diào)用我的方法.

所以我的問題是 – 當(dāng)廣播接收器被激發(fā)時,如何在不使其成為“公共靜態(tài)”的情況下調(diào)用此方法?

這是我的活動代碼(我刪除了不相關(guān)的部分)

package com.silverfix.ringo.activities;

import com.silverfix.ringo.R;

import com.silverfix.ringo.activities.fragments.DataManagerFragment;

import android.app.ActionBar;

import android.app.Activity;

import android.app.FragmentTransaction;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

public class RingtonesActivity extends Activity{

private DataManagerFragment dataManagerFragment;

private IntentFilter filter;

private BroadcastReceiver phoneCall;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_ringtones);

ActionBar ab = getActionBar();

ab.setDisplayShowTitleEnabled(false);

ab.setDisplayHomeAsUpEnabled(true);

dataManagerFragment = new DataManagerFragment();

FragmentTransaction ft = getFragmentManager().beginTransaction();

ft.add(dataManagerFragment, "DataManagerFragment");

ft.commit();

filter = new IntentFilter();

filter.addAction("android.intent.action.PHONE_STATE");

phoneCall = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

dataManagerFragment.act();

}

};

registerReceiver(phoneCall, filter);

}

}

解決方法:

你可以使用觀察者

public class MyReceiver extends BroadcastReceiver {

public MyReceiver() {

}

@Override

public void onReceive(Context context, Intent intent) {

ObservableObject.getInstance().updateValue(intent);

}

}

public class MainActivity extends Activity implements Observer {

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ObservableObject.getInstance().addObserver(this);

}

@Override

public void update(Observable observable, Object data) {

Toast.makeText(this, String.valueOf("activity observer " + data), Toast.LENGTH_SHORT).show();

}

}

public class ObservableObject extends Observable {

private static ObservableObject instance = new ObservableObject();

public static ObservableObject getInstance() {

return instance;

}

private ObservableObject() {

}

public void updateValue(Object data) {

synchronized (this) {

setChanged();

notifyObservers(data);

}

}

}

接收器可以通過清單使用.

ObservableObject – 必須是單例.

標(biāo)簽:invoke,android,methods,android-activity,broadcastreceiver

來源: https://codeday.me/bug/20190923/1815245.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的android 广播观察者,BroadcastReceiver和Activity之间的通信 – android的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。