Java 如何使用处理程序从线程打开新活动

Java 如何使用处理程序从线程打开新活动,java,android,multithreading,handler,Java,Android,Multithreading,Handler,开始时,每件事都很好,但我改变了一些事情,现在当我从线程(而不是UI线程)打开新活动时,应用程序崩溃了 该应用程序只有在安装后才会在我的手机上崩溃,在调试模式下,由于某些原因我无法理解,它工作得很好 这是我的处理程序: handler = new Handler(Looper.getMainLooper()); // --- thread work function --- public void OnLoseActivity() { handler.post(new Runnable

开始时,每件事都很好,但我改变了一些事情,现在当我从线程(而不是UI线程)打开新活动时,应用程序崩溃了

该应用程序只有在安装后才会在我的手机上崩溃,在调试模式下,由于某些原因我无法理解,它工作得很好

这是我的处理程序:

handler = new Handler(Looper.getMainLooper());

// --- thread work function ---
public void OnLoseActivity()
{
    handler.post(new Runnable() {
        @Override
        public void run() {
            Intent myActivity= new Intent(mainActivity.this, newActivity.class);
            startActivity(myActivity);
        }
    });
}
我做错了什么

在结束第一个活动之前需要处理其他问题吗

谢谢

更新:

我从线程打开活动的原因是线程检查循环中的某个内容(如果发生),并且该活动将保持打开状态

我不习惯与经理人一起工作,请向我解释我是否在做新手的事情


正如我所写的,logcat中没有什么特别之处,因为在调试时,它工作得很好

如果您在活动中运行此功能,请尝试此功能。将您的意图放在方法中,并在Runnable中调用该方法

void startMyActivity()
{
            Intent myActivity= new Intent(mainActivity.this, newActivity.class);
            startActivity(myActivity);
}
并更改您的Runnable:

 new Handler().post(new Runnable() {
        @Override
        public void run() {
            startMyActivity();
        }
    });

为什么要使用具有runnable的处理程序来启动新活动?您不需要
Looper.getMainLooper()