Java 在与父活动不同的过程中完成子活动。finishActivity()不工作

Java 在与父活动不同的过程中完成子活动。finishActivity()不工作,java,android,Java,Android,我有一个活动[Activity1],它启动一个名为[ProRunnable]的Runnable,在ProRunnable的运行中,我有一个名为[TExecutor]的类的实例,我在该类上调用了一个方法 然后,该方法为结果启动另一个活动[Activity2]。Activity2使用ExecutorService启动一个可调用的 TExecutor包含对Activity1的引用。如何强制Activity2从外部Activity2完成?我需要Activity2来完成,Callable也需要停止运行 我

我有一个活动[Activity1],它启动一个名为[ProRunnable]的Runnable,在ProRunnable的运行中,我有一个名为[TExecutor]的类的实例,我在该类上调用了一个方法

然后,该方法为结果启动另一个活动[Activity2]。Activity2使用ExecutorService启动一个可调用的

TExecutor包含对Activity1的引用。如何强制Activity2从外部Activity2完成?我需要Activity2来完成,Callable也需要停止运行

我尝试过activity1.finishActivity1,其中1是我在TExecutor中启动Activity2时使用的请求代码。但它从不称之为活动的onDestroy 2。我看不出它在试图完成这项活动

在我调用活动完成后,它似乎没有进入onDestroy,可调用的继续运行

Activity2没有主题,所以它基本上是在后台运行的。这也是一个不同的过程。我在清单中设置了所有这些,如底部所示

我知道,听起来很困惑。如果你需要更多的信息,请告诉我

谢谢


在Texector调用activity1.finishActivity1后,尝试关闭Activity2中的其他功能。我怀疑Activity2实际上接收的是暂停或停止,而不是onDestroy,它只由基于资源可用性的系统突发奇想调用。

我们实际上将它们完全移动到了不同的应用程序中。而且结构有了很大的改变。

我一有机会就会试试这个。谢谢,当我试图完成活动2时,我没有看到调用这些方法中的任何一种。如果没有在我的开发环境中实际实施您的活动并进行实验,我将无法进一步帮助您,我只是现在没有时间这么做:什么!?你没有时间满足我的每一个需要吗?你是个可怕的人,你应该感到羞耻我认为我们已经找到了一个不同的解决方案,无论如何都会更好。如果成功了,我会把它贴在这里。谢谢,不用担心。我希望这项工作能为你解决这个问题。
public class Activity1 extends FragmentActivity {

    private ProRunnable proRunnable;
    private Thread thread;

    public onStart() {

        this.proRunnable = new ProRunnable(this);
        this.thread = new Thread(this.proRunnable);
        this.thread.start();
    }

    ON BUTTON PRESS {

        this.finishActivity(Activity2.REQUEST_CODE);
    }

    protected void onActivityResult(int reqCode, int resCode, Intent data) {

        if(reqCode == Activity2.REQUEST_CODE) {

            //do stuff
        }
    }
}
public class ProRunnable implements Runnable {

    private TExecutor tExecutor;
    private Activity activty1;

    public ProRunnable(Activity activity) {

        this.activity1 = activity;
    }

    public void run() {

        this.tExecutor = new TExecutor(this.activity1);
        this.tExecutor.execute();
    }
}
public final class TExecutor {

    private final Activity activity1;
    private Intent activity2Intent;

    public TExecutor(Activity activity) {

        this.activity1 = activity;
    }

    public void execute() {

        this.activity2Intent = new Intent(activity1.getBaseContext(), Activity2.class);
        this.activity2Intent.startActivityForResult(this.activity2Intent, Activity2.REQUEST_CODE);
    }
}
public class Activity2 extends Activity {

    public static final int REQUEST_CODE = 1;
    private ExecutorService executor;

    protected void onStart() {

        Intent returnIntent = new Intent();
        InsertThread insert = new InserterThread();
        this.executor = Executors.newSingleThreadExecutor();
        Future<Boolean> submit = this.executor.submit(inserter);

        try {

            submit.get();
        } catch ... {
        }
    }

    private class InserterThread implements Callable<Boolean> {

        public InserterThread() {

        }

        public Boolean call() throws ... {

            while(!Thread.currentThread().isInterrupted()) {

                for(...) {

                    if(Thread.currentThread().isInterrupted()) {

                        break;
                    }
                }
            }
        }

        protected void onDestroy() {

            super.onDestroy();
            Log.e(TAG, "DESTROYING THE ACTIVITY");
            this.executor.shutdownNow();
        }
    }
}
<manifest...>
    <application android:process="package.path.p1">
        <activity android:name="package.path.Activity1"/>
        <activity android:name="package.path.Activity2" android:process="package.path.p2" android:theme="@android:style/Theme.NoDisplay"/>
    </application>
</manifest>