Java Android使用broadcastReceiver,但当我强制关闭应用程序时,我不会';我在活动中什么也得不到

Java Android使用broadcastReceiver,但当我强制关闭应用程序时,我不会';我在活动中什么也得不到,java,android,Java,Android,不确定在应用程序被强制关闭后如何让接收器处理活动。 即使应用程序被强制关闭,我还缺少什么来让它工作?任何帮助都将不胜感激 我正在让BroadcastReceiver服务正常工作,只是在活动级别上没有获得任何信息 我有我的接收器(服务): public class MyReceiver extends BroadcastReceiver { public static final String SEND_NOTIFICATION_ACTION = "com.clover.sdk

不确定在应用程序被强制关闭后如何让接收器处理活动。 即使应用程序被强制关闭,我还缺少什么来让它工作?任何帮助都将不胜感激

我正在让BroadcastReceiver服务正常工作,只是在活动级别上没有获得任何信息

我有我的接收器(服务):

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);
        }
    }
}
// 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"));
    }
};
我的活动

public class MainActivity extends AppCompatActivity {

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

        registerReceiver(broadcastReceiver, new IntentFilter("broadCastName"));
 }
}
然后我的活动中的广播接收器:

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);
        }
    }
}
// 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"));
    }
};
不确定在应用程序被强制关闭后如何让接收器处理活动。即使应用程序被强制关闭,我还缺少什么来让它工作

这是自相矛盾的——如果承载接收器的活动被终止,则无法让接收器在运行时注册它的活动中工作。当您强制关闭时,应用程序进程中的所有内容(包括活动和您注册的接收者)都将消失

调用
registerReceiver
的目的是只在特定的时间范围或生命周期内收听广播

如果你想让接收器在应用程序关闭时仍能工作,不要在运行时注册它-在清单中注册它。

简单, 在活动中注册服务是临时的,在清单中注册服务将在关闭应用程序后运行

但您使用的广播是一个简单的消息传输系统,即使在您注册manifest并关闭应用程序后,它也无法工作。您必须创建一个后台服务,该服务在android系统中始终在后台运行,并且应该在听到一些传递的事件时醒来