【问题标题】:Does Threads in activity terminates when starting another?活动中的线程是否在启动另一个时终止?
【发布时间】:2012-01-22 16:58:32
【问题描述】:

我有一个启动 3 个线程的活动 “While(true)”循环

当我开始一个新活动时,这些线程会自行终止吗?

还有一个问题,我如何开始一项新活动,但我不想允许 '返回'按钮让我回到旧活动 - 实际上我想处理第一个活动并创建并显示一个新活动

谢谢你 罗恩

【问题讨论】:

    标签: android multithreading android-activity back terminate


    【解决方案1】:

    当我开始一个新活动时,这些线程会自行终止吗?

    不,他们没有。您必须在关闭活动之前停止它们。

    我如何开始一项新活动,但我不想让“返回”按钮让我回到旧活动

    当您开始第二个活动时,只需从您的第一个活动中调用 finish() 即可:

    Intent intent = new Intent(...);
    startActivity(intent);
    finish();
    

    【讨论】:

    • 请注意,如果某些内容仍保留其上下文,您的活动可能无法完全完成。因此,如果您从活动中调用带有“this”参数的内容,请确保上下文为空,否则您的活动仍将存在于内存中但似乎已完成。可能会导致丑陋的副作用
    【解决方案2】:

    当活动暂停或停止时线程可能不会立即停止。更好的策略是设置一个标志,一旦调用 onPause 或 stop 就设置为 false。 线程检查此标志并中断自己或退出运行方法。

    如果您不希望后退按钮显示较旧的 Activity,您可以为较旧的 Activity 使用 NO_HISTORY 标志http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NO_HISTORY

    如果您想将此活动作为堆栈中的第一个活动,请使用此标志 FLAG_ACTIVITY_TASK_ON_HOME

    【讨论】:

    • 如果您的活动只是停止或暂停,您的线程不会因此而停止或暂停。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多