Java onReceive Android运行不止一次
因此,我有一个名为TreeActivity()的活动,我向服务请求一个对象。然后我在一个名为TreeReceptor()的私有类中得到响应,该类只有以下函数: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
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方法中注销它。
不要点击按钮。
你们可以在这里看到教程
请提供注册/注销接收人的代码方法仍然存在相同的问题(我编辑代码是因为一行错误),但最终并不能解决问题