android:线程跳转到另一个activity时,新activity不能创建线程

一个activity开启线程,当运行结束后通过handler传消息,在handleMessage()里实现跳转到另一个activity,此时新的activity不能在创建... 一个activity开启线程,当运行结束后通过handler传消息,在handleMessage()里实现跳转到另一个activity,此时新的activity不能在创建新的线程了,老运行到ThreadGroup里的stopOrSuspend函数发生异常,怎么回事啊?是不是与线程组有关啊?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

/*SharedPreferences settings = getSharedPreferences(z4root.PREFS_NAME, 0);
MODE = settings.getInt(z4root.PREFS_MODE, 0);*/

setContentView(R.layout.p2);

detailtext = (TextView) findViewById(R.id.detailtext);
new Thread() {
public void run() {
dostuff();
};
}.start()

一执行start()就出错,把dostuff()换成变量赋值也出错!
我发现一个问题,handleMessage()接受到线程传来的消息后创建新线程也会产生同样的错误
展开
 我来答
QQMSD8
2015-12-02 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
这个问题只需要了解Activity的启动模拟即可。
Activity启动模式有4种,分别为standard、singleTop、singleTask、singleInstance。

1.standard 默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。

2.singleTop 可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。
3.singleTask 只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
3.singleInstance只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
之卿飞B
2015-04-15 · TA获得超过1015个赞
知道小有建树答主
回答量:1086
采纳率:80%
帮助的人:514万
展开全部
在方法dostuff()中是否有对UI的更新操作呢?
android中非UI线程不能直接更新UI
可以通过handler更新UI
或者
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub

}
});更新
追问
有runOnUiThread(new Runnable() 更新,但是我如果把dostuff()这个函数去掉,换成简单的变量赋值也出错。第二个activity跟第一个activity结构差不多,第一个的线程都能正常运行,就是第二个不能创建。老是报:Thread creation failed(err=Invalid argument)
追答
查看logcat相应的异常信息
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千锋教育
2015-12-03 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
消息机制其实很简单,实现这种机制需要只需要四步:
1、实例化Looper(因为实例化Handler时需要一个looper);
2、实例化Handler,这里需要覆盖handleMessage方法,处理收到的消息;
3、 实例化Message对象,调用已经实例化好的handler对象的obtainMessage方法,把数据传给obtainMessage方法,obtainMessage方法就会实例化一个Message对象。(这里也可以发送实现Runnable接口的对象);
4、调用Handler的sendMessage方法把实例化好的Message对象发送出去。
对每个线程过程都是一样的,只要按照上面的四个步骤来就可以发送和接收消息了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式