gpt4 book ai didi

java - 在与父 Activity 不同的进程中完成子 Activity 。 finishActivity() 不起作用

转载 作者:行者123 更新时间:2023-12-01 04:47:36 25 4
gpt4 key购买 nike

我有一个 Activity [Activity1],它启动一个名为 [ProRunnable] 的 Runnable,并在 ProRunnable 的 run() 我有一个名为 [TExecutor] 的类的实例,我在其上调用了一个方法。

该方法然后启动另一个Activity [Activity2]以获取结果。 Activity2 使用 ExecutorService 启动一个 Callable

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

我尝试过activity1.finishActivity(1),其中“1”是我用来在TExecutor中启动Activity2的请求代码。但它永远不会调用 Activity2onDestroy。我没有看到它正在尝试完成 Activity2

在我调用 Activity 完成后,它似乎没有进入 onDestroy 并且可调用继续运行。

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

我知道,这听起来很令人困惑。如果您需要更多信息,请告诉我。

谢谢

<小时/>
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>

最佳答案

尝试关机中的其他功能Life Cycle TExecutor 调用 activity1.finishActivity(1) 后的 Activity2。我怀疑 Activity2 实际上正在接收 onPause()onStop(),而不是 onDestroy(),这仅根据资源可用性由系统突发奇想调用。

关于java - 在与父 Activity 不同的进程中完成子 Activity 。 finishActivity() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com