Broadcast Receiver in fragment not receive intent from service

我与影子孤独终老i 提交于 2020-01-03 08:40:15

问题


I have a fragment and a service as below:

I register and unregister LocalbroadcastManager in file Fragment.java

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)){
     ....
   }
}

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

ffmpegService.java

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.

Any help would be appreciated!

Thanks.


回答1:


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>

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



来源:https://stackoverflow.com/questions/22541477/broadcast-receiver-in-fragment-not-receive-intent-from-service

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!