Java onReceive Android运行不止一次

Java onReceive Android运行不止一次,java,android,android-intent,Java,Android,Android Intent,因此,我有一个名为TreeActivity()的活动,我向服务请求一个对象。然后我在一个名为TreeReceptor()的私有类中得到响应,该类只有以下函数: public void onReceive(final Context context, final Intent intent) { if (intent.getAction().equals(TreeReceptor.tree)) { CustomSerializable root; root

因此,我有一个名为TreeActivity()的活动,我向服务请求一个对象。然后我在一个名为TreeReceptor()的私有类中得到响应,该类只有以下函数:

public void onReceive(final Context context, final Intent intent) {
    if (intent.getAction().equals(TreeReceptor.tree)) {
        CustomSerializable root;
        root = (CustomSerializable) intent.getSerializableExtra("tree");
        GenerationTree treeGen = new GenerationTree(root);
        treeGen.run();
    }
}
GenerationTree类如下所示:

private class ReportGeneration extends Thread {
    private CustomSerializable root;
    public ReportGeneration(CustomSerializable root) {
        this.root = root;
    }
    public final void run() {
        System.out.println(root.getName());
    }

}
在我的活动中,有一个按钮将操作发送到服务,然后服务发送CustomSerializable对象。我正确地接收了所有内容,唯一的问题是onReceive函数执行了多次。 例如:如果这是我第一次点击按钮,它不会做任何事情。如果是第二次,它将执行onReceive函数两次,如果是第三次,它将执行三次,依此类推

这是我第一次使用Android应用程序,我完全迷路了,你知道它会是什么吗?我还发现一些其他问题,比如对于某些特定的设备,它会多次执行该功能,因此,为了了解一些信息,我正在Nexus 5 API23 x86 Andriod 6.0中模拟我的项目

public void onReceive(final Context context, final Intent intent) {
    if (intent.getAction().equals(Tree.tree)) {
        CustomSerializable tree;
        **final root =(CustomSerializable)intent.getSerializableExtra("tree");**
        GenerationTree treeGen = new GenerationTree(root);
        treeGen.run();
    }
}
根对象使其成为最终对象


抱歉用英语。

我发现了问题,那就是我每次点击都要创建一个接收器。现在,我只创建了一个接收器,我确保在我已经收到对象时将其从接收器列表中删除。为此,我使用以下行:
unregistereceptor(receptor)


编辑:但找不到问题,为什么我第一次单击它时什么也不做。

请确保在onResume或onCreate方法中注册你的接收器,并分别在onPause或onStop方法中注销它。 不要点击按钮。
你们可以在这里看到教程


请提供注册/注销接收人的代码方法仍然存在相同的问题(我编辑代码是因为一行错误),但最终并不能解决问题