首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Studio,Thread一遍又一遍地重启

Android Studio,Thread一遍又一遍地重启
EN

Stack Overflow用户
提问于 2016-11-07 05:43:22
回答 2查看 69关注 0票数 0

这里有个新手。

我做了一个线程(我将调用主线程在这一刻之后),它控制的时间与1000ms睡眠和改变一些变量在主activity.And我显示的布局中的变量。

不知何故,当主线程工作时,我需要转到另一个活动,然后需要返回到主活动。

理论上我知道,线程不会停止。好的,这对我来说很好,我需要用算法随时改变变量。

但是当我转到另一个活动,然后返回到主线程的活动时,变量发生了变化,就像维护线程第二次启动一样。所有的变量都比它们必须的大2x倍。当我转到另一个活动并第三次返回main时,变量的变化是原来的3倍。在另一个活动中,我只使用了这段代码,没有使用其他代码;

代码语言:javascript
复制
startActivity(new Intent(n7Activity.this, MainActivity.class));

我想问一下,假设我在主活动中启动了一个线程,然后我使用经典的intent方法转到了另一个活动(顺便说一句,我没有使用任何on pause方法或smthg)。那么当我返回到main activity时,是否同一线程启动了第二次,而第一个线程仍在工作?

非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2016-11-07 06:12:41

startActivity()创建一个新的Activity实例。我认为应该在另一个活动中调用finish()来返回到主活动。

票数 0
EN

Stack Overflow用户

发布于 2016-11-07 06:50:12

当我返回main activity时,是否同一线程启动了第二次,而第一个线程仍在工作?

看起来是这样的。

你用什么方法创建你的线程?如果它在onCreate中,那么您的线程将只创建一次,因为onCreate在活动生命周期中只被调用一次。

尽管如此,我还是建议您使用TimerHandler。它们的特性正是您所需要的。在这种情况下,您不需要手动分派线程。

注意活动的生命周期也很重要,这样不会有线程为不在前台的活动消耗CPU。例如,当在activity上调用OnPause时,您应该停止计时器。

更新

实际上,您可以在Timer中调度重复任务。下面是一个例子:

代码语言:javascript
复制
public class MyActivity extends Activity {

    private Timer mMyTimer;

    @Override
    protected void onResume() {
        super.onResume();

        mMyTimer = new Timer();
        // 0L means "start right now".
        // 1000L is the period between executions in ms.
        mMyTimer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                // It's a background thread, so
                // don't update the UI directly from here.
                doStuff();
            }
        }, 0L, 1000L);
    }

    Override
    protected void onPause() {
        super.onPause();

        mMyTimer.cancel();
        mMyTimer = null;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40454861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档