当前位置: 首页 > 知识库问答 >
问题:

意向服务与Socket.io在清除最近的事件后被杀

公孙成仁
2023-03-14

我正在尝试制作一个通过套接字连接到服务器的通知应用程序。我希望在用户未打开我的应用时,在后台运行一些服务,类似于许多电子邮件/聊天应用,以便用户能够接收通知。

我有一个问题,每当我清除最近的应用程序时,服务就会被杀死。

以下是我尝试过的:

>

  • 使用IntentService,这是我在我的主要活动的创建中开始的
  • 在onHandleIntent内部调用starForeground
  • onHandleIntent包含我的套接字连接启动
  • 重写启动命令以返回START_STICKY

    @Override
    protected void onHandleIntent(Intent intent) {
        // Socket.io
        mSocket.on("debug-listing", new Emitter.Listener() {
            @Override
            public void call(final Object... args) {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        // I want this to run in the background
                        String msg = (String) args[0];
                        Intent done = new Intent();
                        done.putExtra("title", msg);
                        done.putExtra("id", idCount++);
                        done.setAction("action");
                        sendBroadcast(done); 
                    }
                });
            }
        });
    
        mSocket.connect();
    
        Notification n = new Notification.Builder(this)
                .setContentTitle("Test")
                .setContentText("Test")
                .setSmallIcon(R.drawable.ic_stat_ic_notification)
                .build();
        startForeground(421941, n);
    }
    

    每当我的应用程序被打开/最小化时,我都会收到通知,但一旦我清除最近的应用程序,它就会被杀死。如何防止这种情况发生?

  • 共有1个答案

    逑翰翮
    2023-03-14

    我想出来了。

    我重写了onCreate函数,将所有套接字。io事件处理程序,以及注册我希望在事件发生时向其广播的任何广播接收器(也称为我希望发送通知)。

    我在里面叫onStart。在我的套接字变量上连接(),并返回START_STICKY,当我清除最近的应用程序时,它会重新启动我的服务。

    我什么都不做。

    我想接下来的问题是,为什么我不在OnHandleContent中做任何事情(我不应该使用IntentService吗?我应该使用Service吗),但这可以在另一个线程上进行。不过,请多加解释!

     类似资料:
    • 我有一个正在运行的nodejs服务器(通过浏览器,socket.io工作得非常好,可以发射和接收事件)。为了方便地模拟联机连接,im使用ngrok.io来隧道我的本地主机。这一切都很好。我想编写一个连接到同一服务器的小应用程序,但是虽然我的服务器能够累加socket.connect()调用,但它不能累加任何。emit()事件。 (我使用com.github.nkzawa:socket.io-cli

    • 后台服务是停止的,从最近在oppo&vivo手机中删除我的应用程序时,&广播累西弗在那种情况下也不工作。

    • 嗨,我正在尝试从PHP向socketio服务器发出事件。这两个叉子我都试过了: https://github.com/rase-/socket.io-php-emitter https://github.com/ashiina/socket.io-php-emitter 你知道我做错了什么吗?

    • Socket.io 是一款非常流行的应用层实时通讯协议和框架,可以轻松实现应答、分组、广播。hyperf/socketio-server 支持了 Socket.io 的 WebSocket 传输协议。 安装 composer require hyperf/socketio-server hyperf/socketio-server 组件是基于 WebSocket 实现的,请确保服务端已经添加了

    • 问题内容: 我想使用socket.io将数据从服务器推送到浏览器,但是该项目是java tomcat之一,并且 Github中 有许多实现的服务器实现。他们中的大多数人都说 过时了, 或者有更好的版本可用。谁能建议我一个好的实现。 而且,我看到了许多有关使用广播的演示和示例代码。我的要求是将不同的消息推送到不同的客户端。有人可以指出一些有关此类内容的优秀演示或教程吗? 谢谢 问题答案: 作为作者,

    • 因此,活动将运行并停止服务,该服务将运行并停止服务。 我的问题是创建了的多个实例,该活动还创建了的多个实例。 因此,我希望将这两个作为运行,但我不确定如何这样做。 如果有必要,我可以发布一些我所拥有的示例代码,但我真正寻找的是一个操作方法。