如何从带有处理程序的线程中打开新的 activity
how to open new activity from a thread with an handler
一开始一切都很好,但我改变了一些东西,现在当我从一个线程(而不是 UI 线程)打开新的 activity 时,应用程序崩溃了。
该应用程序仅在安装后在我的 phone 上崩溃,在调试模式下,由于某些我无法理解的原因它运行良好。
这是我的经纪人:
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);
}
});
}
我做错了什么?
在关闭此之前需要处理其他问题activity?
谢谢
更新:
我从线程打开 activity 的原因是线程在循环中检查某些东西,如果它成功并且 activity shuold 打开。
我不习惯与处理程序一起工作,如果我在做新的事情请向我解释。
如我所写,logcat 中没有什么特别的,因为在调试时它工作正常
如果您在 Activity 中 运行,试试这个。将您的 Intent 放入一个方法中,然后在您的 Runnable 中调用该方法。
void startMyActivity()
{
Intent myActivity= new Intent(mainActivity.this, newActivity.class);
startActivity(myActivity);
}
并更改您的 Runnable:
new Handler().post(new Runnable() {
@Override
public void run() {
startMyActivity();
}
});
一开始一切都很好,但我改变了一些东西,现在当我从一个线程(而不是 UI 线程)打开新的 activity 时,应用程序崩溃了。
该应用程序仅在安装后在我的 phone 上崩溃,在调试模式下,由于某些我无法理解的原因它运行良好。
这是我的经纪人:
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);
}
});
}
我做错了什么?
在关闭此之前需要处理其他问题activity?
谢谢
更新:
我从线程打开 activity 的原因是线程在循环中检查某些东西,如果它成功并且 activity shuold 打开。
我不习惯与处理程序一起工作,如果我在做新的事情请向我解释。
如我所写,logcat 中没有什么特别的,因为在调试时它工作正常
如果您在 Activity 中 运行,试试这个。将您的 Intent 放入一个方法中,然后在您的 Runnable 中调用该方法。
void startMyActivity()
{
Intent myActivity= new Intent(mainActivity.this, newActivity.class);
startActivity(myActivity);
}
并更改您的 Runnable:
new Handler().post(new Runnable() {
@Override
public void run() {
startMyActivity();
}
});