Yog*_*thi 4 java oop service android
如何从fcm服务调用活动类方法.
我已经尝试过这种方式从Service类调用活动类方法
但是在fcm服务onBind方法是最终的所以我们不能覆盖,所以任何其他方式从fcm服务调用活动类方法.
供参考一些代码如何实现fcm.
public class FCMListenerService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage message) {
}
}
Run Code Online (Sandbox Code Playgroud)
当我的活动正在运行并且fcm通知出现时,我想更新代码?有没有办法处理这个要求?
Tho*_*mas 22
我想你必须尝试使用BroadcastReceiver.这是您从FCMListenerService发送消息的方式:
public class FCMListenerService extends FirebaseMessagingService {
public static final String INTENT_FILTER = "INTENT_FILTER";
@Override
public void onMessageReceived(RemoteMessage message) {
Intent intent = new Intent(INTENT_FILTER);
sendBroadcast(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以尝试以这种方式捕捉它,在你的活动中使用广播接收器:
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateUi();
}
};
Run Code Online (Sandbox Code Playgroud)
不要忘记在您的活动中使用onCreate()/ onDestroy()方法注册/取消注册您的接收器.
的onCreate()
registerReceiver(myReceiver, new IntentFilter(FCMListenerService.INTENT_FILTER));
Run Code Online (Sandbox Code Playgroud)
的onDestroy()
unregisterReceiver(myReceiver);
Run Code Online (Sandbox Code Playgroud)
Jag*_*ngh -3
试试这个假设你想调用MainActivity;的方法 在 MainActivity 中创建static变量Context context并初始化onCreate()。static并让你想在 MainActivity 中调用的方法说
public static void updateUi()
{
// code to update Ui
}
Run Code Online (Sandbox Code Playgroud)
然后从服务中调用这样的:-
((MainActivity)MainActivity.context).updateUi();
Run Code Online (Sandbox Code Playgroud)
更新:如果您想在多个活动中执行,那么您可以使用此方法并处理此updateUi()方法中的逻辑