片段中的广播接收器无法从服务接收意图 [英] Broadcast Receiver in fragment not receive intent from service

查看:96
本文介绍了片段中的广播接收器无法从服务接收意图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个片段和一个服务,如下所示:

I have a fragment and a service as below:

我在Fragment.java文件中注册和注销LocalbroadcastManager

I register and unregister LocalbroadcastManager in file Fragment.java

@Override
public void onStart() {
   // TODO Auto-generated method stub
   super.onStart();
   IntentFilter intentFilter = new IntentFilter();
   intentFilter.addAction(ffmpegService.PROGRESS);
   intentFilter.addAction(ffmpegService.DONE);
   LocalBroadcastManager.getInstance(getActivity()).
       registerReceiver(receiver, intentFilter);
}

@Override
public void onStop() {
   LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(receiver); 
   super.onStop();
}

private final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
   if(intent.getAction().equalsIgnoreCase(ffmpegService.PROGRESS)){
     ....
   }
}

在ffmpegService类中,我将广播发送到片段的1个处理程序中,如下所示:

In ffmpegService class, I send broadcast to fragment in 1 handler as below:

private Handler handler;
private Context mContext;

public void onCreate() {
   mContext = this.getApplicationContext();
}

@Override
public void onStart(Intent intent, int startid) {
   handler = new Handler();
   handler.postDelayed(workTask, 3000);
}

private Runnable workTask = new Runnable() {
   @Override
   public void run() {
     Intent intent = new Intent(PROGRESS);
     intent.putExtra("progress", 90);
     LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
   }
}

但是在运行中,该片段没有从服务广播中接收任何信息.

But in running, the fragment did not receive anything from service broadcasting.

任何帮助将不胜感激!

谢谢.

推荐答案

我找到了根本原因.因为我的服务在自己的进程中运行.

I found the root cause. Because my service is running in own process.

<service
        android:name="com.media.ffmpeg.ffmpegService"
        android:enabled="true"
        android:process="com.media.ffmpegservice">
</service>

我删除了android:process ="com.media.ffmpegservice"并且运行正常.

I deleted android:process="com.media.ffmpegservice" and it works ok.

这篇关于片段中的广播接收器无法从服务接收意图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆