日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

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

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

所以我的問題是 – 當廣播接收器被激發(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 – 必須是單例.

標簽:invoke,android,methods,android-activity,broadcastreceiver

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

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

總結(jié)

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

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