Java 在与父活动不同的过程中完成子活动。finishActivity()不工作
我有一个活动[Activity1],它启动一个名为[ProRunnable]的Runnable,在ProRunnable的运行中,我有一个名为[TExecutor]的类的实例,我在该类上调用了一个方法 然后,该方法为结果启动另一个活动[Activity2]。Activity2使用ExecutorService启动一个可调用的 TExecutor包含对Activity1的引用。如何强制Activity2从外部Activity2完成?我需要Activity2来完成,Callable也需要停止运行 我尝试过activity1.finishActivity1,其中1是我在TExecutor中启动Activity2时使用的请求代码。但它从不称之为活动的onDestroy 2。我看不出它在试图完成这项活动 在我调用活动完成后,它似乎没有进入onDestroy,可调用的继续运行 Activity2没有主题,所以它基本上是在后台运行的。这也是一个不同的过程。我在清单中设置了所有这些,如底部所示 我知道,听起来很困惑。如果你需要更多的信息,请告诉我 谢谢Java 在与父活动不同的过程中完成子活动。finishActivity()不工作,java,android,Java,Android,我有一个活动[Activity1],它启动一个名为[ProRunnable]的Runnable,在ProRunnable的运行中,我有一个名为[TExecutor]的类的实例,我在该类上调用了一个方法 然后,该方法为结果启动另一个活动[Activity2]。Activity2使用ExecutorService启动一个可调用的 TExecutor包含对Activity1的引用。如何强制Activity2从外部Activity2完成?我需要Activity2来完成,Callable也需要停止运行 我
在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>