Java Android使用broadcastReceiver,但当我强制关闭应用程序时,我不会';我在活动中什么也得不到
不确定在应用程序被强制关闭后如何让接收器处理活动。 即使应用程序被强制关闭,我还缺少什么来让它工作?任何帮助都将不胜感激 我正在让BroadcastReceiver服务正常工作,只是在活动级别上没有获得任何信息 我有我的接收器(服务):Java Android使用broadcastReceiver,但当我强制关闭应用程序时,我不会';我在活动中什么也得不到,java,android,Java,Android,不确定在应用程序被强制关闭后如何让接收器处理活动。 即使应用程序被强制关闭,我还缺少什么来让它工作?任何帮助都将不胜感激 我正在让BroadcastReceiver服务正常工作,只是在活动级别上没有获得任何信息 我有我的接收器(服务): public class MyReceiver extends BroadcastReceiver { public static final String SEND_NOTIFICATION_ACTION = "com.clover.sdk
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系统中始终在后台运行,并且应该在听到一些传递的事件时醒来