简体   繁体   中英

Android using broadcastReceiver, but when I force close the app, I don't get anything in the Activity

Not sure how to get the receiver to work on the activity once the app is forced closed. What am I missing to get this to work even if the app was forced closed? Any help would be appreciated.

I am getting the BroadcastReceiver service to work, Just not getting anything to pick up on the activity level.

I have my receiver (Service):

public class MyReceiver extends BroadcastReceiver {

    public static final String SEND_NOTIFICATION_ACTION = "com.clover.sdk.app.intent.action.APP_NOTIFICATION";

    @Override
    public void onReceive(Context context, Intent intent) {

        Log.i("MyReceiver", "Triggered MyReceiver");
        String action = intent.getAction();

        Bundle getIntent = intent.getExtras();

        if (action.equals(SEND_NOTIFICATION_ACTION)) {
            Log.i("MyReceiver Gotten", "Found");
            intent = new Intent("broadCastName");
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra("orderId", getIntent.getString("payload"));
            Log.i("Receiver OrderID", getIntent.getString("payload"));
            context.sendBroadcast(intent);
        }
    }
}

My Activity

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        registerReceiver(broadcastReceiver, new IntentFilter("broadCastName"));
 }
}

Then my broadcastReceiver in my activity:

// Add this inside your class
BroadcastReceiver broadcastReceiver =  new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyReceiver Gotten 2", "Found");
        Bundle b = intent.getExtras();
        Log.i("MyReceiver Gotten 3", b.getString("orderId"));
        new SpecificOrderAsyncTask(MainActivity.this).execute(b.getString("orderId"));
    }
};

Not sure how to get the receiver to work on the activity once the app is forced closed. What am I missing to get this to work even if the app was forced closed?

That's contradictory - you can't get a receiver to work in an Activity that registered it at runtime if that Activity that is hosting the receiver is killed. When you force close, every in the app process - including the Activity and the receiver you registered with it - disappears.

The point of calling registerReceiver is to listen for broadcasts only during a specific time frame or lifecycle.

If you want the receiver to work even when the app is closed, don't register it at runtime - register it in the manifest.

Simple, Registering service in an activity is temporary, registering service in a manifest will run even after closing the application.

But the broadcast you use is a simple message transfer system, that won't work even after you register in manifest and close the application. You have to create a background service that runs always in background in android system and should awake listening to some events passed.

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM