首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓使用broadcastReceiver,但当我强制关闭应用程序时,我在活动中什么也得不到

安卓使用broadcastReceiver,但当我强制关闭应用程序时,我在活动中什么也得不到
EN

Stack Overflow用户
提问于 2021-05-25 14:46:43
回答 2查看 42关注 0票数 0

当应用程序被迫关闭后,不知道如何让接收者在活动中工作。即使应用程序被迫关闭,我还错过了什么来让它工作呢?任何帮助都将不胜感激。

我正在让BroadcastReceiver服务开始工作,只是在活动级别没有得到任何东西。

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

代码语言:javascript
复制
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);
        }
    }
}

我的活动

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

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

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

然后是我在活动中的broadcastReceiver:

代码语言:javascript
复制
// 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"));
    }
};
EN

Stack Overflow用户

发布于 2021-05-25 17:52:37

不知道一旦应用程序被迫关闭,如何让接收者工作。即使应用程序被迫关闭,我还错过了什么来让它工作呢?

这是矛盾的--如果承载接收器的活动被杀死,您就不能让接收方在运行时注册它的活动中工作。当你强行关闭时,应用程序过程中的每一个--包括你注册的活动和接收者--都会消失。

调用registerReceiver的目的是只在特定的时间框架或生命周期内监听广播。

如果您希望在应用程序关闭时接收方工作,不要在运行时注册它-在清单中注册它。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67690372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档