আমার একটি অ্যান্ড্রয়েড ক্রিয়াকলাপ রয়েছে যা দুটি পৃথক সম্প্রচার ধরা দরকার। আমার বর্তমান পদ্ধতির BroadcastReceiver
ক্রিয়াকলাপের মধ্যে একটি থাকা এবং এটির সাথে উভয় সম্প্রচারকে ধরা:
public class MyActivity extends Activity {
private MyActivity.BroadcastListener mBroadcastListener;
private boolean mIsActivityPaused = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
// Create the broadcast listener and register the filters
mIsActivityPaused = false;
mBroadcastListener = new BroadcastListener();
IntentFilter filter = new IntentFilter();
filter.addAction(Params.INTENT_REFRESH);
filter.addAction(Params.INTENT_UPDATE);
registerReceiver(mBroadcastListener, filter);
}
@Override
protected void onResume() {
super.onResume();
mIsActivityPaused = false;
}
@Override
protected void onPause() {
super.onPause();
mIsActivityPaused = true;
}
@Override
protected void onDestroy() {
unregisterReceiver(mBroadcastListener);
super.onDestroy();
}
private void refresh() {
// refresh
}
private void update() {
// update
}
private class BroadcastListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Params.INTENT_REFRESH && !mIsActivityPaused)) {
refresh();
} else if (intent.getAction().equals(Params.INTENT_UPDATE)) {
update();
}
}
}
}
আমি refresh()
কেবলমাত্র আমার ক্রিয়াকলাপটি স্ক্রিনে দৃশ্যমান থাকলে সম্পাদন করতে চাই, তবে ক্রিয়াকলাপটি দৃশ্যমান কিনা তা নির্বিশেষে আমি ক্রিয়াকলাপটির পুরো জীবনকালে ধরে ফেলতে INTENT_UPDATE
এবং সম্পাদন update()
করতে চাই।
আমি যে দুটি ফিল্টার নিবন্ধভুক্ত করেছি তার মধ্যে কেবল একটিতে নিবন্ধভুক্ত করার কোনও উপায় আমি খুঁজে পাইনি onCreate
, তাই আমি INTENT_REFRESH
ক্রিয়াকলাপের অবস্থার উপর নির্ভর করে সম্প্রচারটি ধরা পড়লে কার্যকর করা কর্মটি সক্ষম বা অক্ষম করতে একটি পতাকা ব্যবহার করি ।
প্রশ্নটি : এটি কি সঠিক পদ্ধতির?
অথবা, নীচের হিসাবে দুটি পৃথক ব্রডকাস্টার রিসিভার থাকা ভাল:
public class MyActivity extends Activity {
private MyActivity.BroadcastListenerRefresh mBroadcastListenerRefresh;
private MyActivity.BroadcastListenerUpdate mBroadcastListenerUpdate;
private boolean mIsBroadcastListenerRefreshRegistered = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create the broadcast listeners
mBroadcastListenerRefresh = new BroadcastListenerRefresh();
mBroadcastListenerUpdate = new BroadcastListenerUpdate();
registerReceiver(mBroadcastListenerRefresh, new IntentFilter(Params.INTENT_REFRESH));
registerReceiver(mBroadcastListenerUpdate, new IntentFilter(Params.INTENT_UPDATE));
}
@Override
protected void onResume() {
super.onResume();
if (mBroadcastListenerRefresh != null && !mIsBroadcastListenerRefreshRegistered) {
registerReceiver(mBroadcastListenerRefresh, new IntentFilter(Params.INTENT_REFRESH));
mIsBroadcastListenerRefreshRegistered = true;
}
}
@Override
protected void onPause() {
super.onPause();
if (mBroadcastListenerRefresh != null && mIsBroadcastListenerRefreshRegistered) {
unregisterReceiver(mBroadcastListenerRefresh);
mIsBroadcastListenerRefreshRegistered = false;
}
}
@Override
protected void onDestroy() {
unregisterReceiver(mBroadcastListenerRefresh);
unregisterReceiver(mBroadcastListenerUpdate);
super.onDestroy();
}
private void refresh() {
// refresh
}
private void update() {
// update
}
private class BroadcastListenerRefresh extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Params.INTENT_REFRESH)) {
refresh();
}
}
}
private class BroadcastListenerUpdate extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Params.INTENT_UPDATE)) {
update();
}
}
}
}
এবং কোন এক ভাল পারফরম্যান্স আছে?