I have a fragment and a service , I want to update UI (listview) of Fragment from service after performing a task so I created a BroadcastReceiver , but onReceive method is not being called.Please suggest.
here is my code : MyReciever :
public class Myreceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.d("TAG" , "onrecive::");
refreshView();
}
}
onREsume/onPause of fragment :
@Override
public void onResume() {
super.onResume();
Log.d(TAG, tag + " onResume() called");
Log.d("TAG" , "nibha :: test on resume " +DeliveryOrder.isSyncDone );
getActivity().registerReceiver(myrec,
new IntentFilter("com.Mediapp."+tag+".SYNC_FINISH"));
mDOListAdapter.notifyDataSetChanged();
Log.d(TAG, tag + " onResume() ended");
}
@Override
public void onPause() {
super.onPause();
Log.d(TAG, tag + " onPause called");
getActivity().unregisterReceiver(myrec);
Log.d(TAG, tag + " onPause ended");
}
onService:
Log.d("TAG" , "nibha :: test " +DeliveryOrder.isSyncDone );
Intent in= new Intent();
in.setAction("com.Mediapp."+tag+".SYNC_FINISH");
sendBroadcast(in);
Log.d("nibha", "onHandleIntent: sending broadcast");
Register BroadcastReceiver
in Android Manifest.
<receiver android:name=".Myreceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
In onResume()
method, save a boolean value in SharedPreferences
.
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor e = settings.edit();
e.putBoolean("action_performed", true);
e.commit();
Now in onReceive()
method of BroadcastReceiver
check whether action_performed is true or not. If it is then do what you want to.
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.d("TAG" , "onrecive::");
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
boolean actionDone = settings.getBoolean("action_performed", false);
if(actionDone) {
refreshView();
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.