推送器在一次推送中复制并接收多个数据

Pusher duplicates and receive multiple data in single push

我正在使用推送器,当 android activity 重新启动时,当我触发推送器调试控制台推送时,我的推送器连接重复值 2、3、4 次。这是代码示例。

PusherOptions options = new PusherOptions();

Pusher pusher ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    try {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    options.setCluster("ap3");
    pusher = new Pusher("<key>", options);

    Log.i("PusherConnecting", "Connecting to Pusher");
    pusher.connect();
    Channel channel = pusher.subscribe("my-channel");

        channel.bind("my-event", new SubscriptionEventListener() {
            @Override
            public void onEvent(PusherEvent event) {

                try {

                    Log.i("PusherData", event.getData());
                }
                catch (Exception ex){
                    Log.i("Error", ex.getMessage());
                }

            }
        });
    } catch (Exception ex) {
        Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

这是关于 activity 销毁的,您可以使用 onDestroy 方法让它变得更好。找到下面 activity 的完整代码。你必须断开 activity.

的 pusher onDestroy 方法
 package com.example.pushertest;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;

import com.pusher.client.Pusher;
import com.pusher.client.PusherOptions;
import com.pusher.client.channel.Channel;
import com.pusher.client.channel.PusherEvent;
import com.pusher.client.channel.SubscriptionEventListener;
import com.pusher.client.connection.ConnectionEventListener;
import com.pusher.client.connection.ConnectionStateChange;

public class MainActivity extends AppCompatActivity {


PusherOptions options = new PusherOptions();

Pusher pusher ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    try {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    options.setCluster("ap3");
    pusher = new Pusher("<key>", options);

    Log.i("PusherConnecting", "Connecting to Pusher");
    pusher.connect();
    Channel channel = pusher.subscribe("my-channel");

        channel.bind("my-event", new SubscriptionEventListener() {
            @Override
            public void onEvent(PusherEvent event) {

                try {

                    Log.i("PusherData", event.getData());
                }
                catch (Exception ex){
                    Log.i("Error", ex.getMessage());
                }

            }
        });
    } catch (Exception ex) {
        Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

@Override
protected void onDestroy() {
    pusher.disconnect();
    android.os.Process.killProcess(android.os.Process.myPid());
    System.exit(1);
    super.onDestroy();
}
}