安卓的线程分为UI线程和工作线程,一般的只有主线程属于UI线程,其它新建的线程都属于工作线程,对UI的 *** 作只能够放到UI线程中进行,当然SurfaceView比较的特殊,对SurfaceView的UI *** 作是可以放到工作线程中进行的,楼主的这种情况一般可以通过在主线程中建立一个 Hander,然后再在工作线程中通过这个Handler发送消息,主线程的Handler的回调事件收到了消息后,在回调事件中调用;ToastmakeText(MainActivitythis, i, ToastLENGTH_SHORT)show(); 就可以了,
希望对你有用,我是ndk吧吧主,有问题可以到ndk吧留言,谢谢!
public class ThreadTest {
static int i=0;
public static void main(String[]args){
//建立3个子线程,以i,i,n,m作为子线程是否结束的判断
//当所有子线程运行完才开始主线程
Systemoutprintln("主线程开始");
Thread t1=new Thread(){
public void run(){
Systemoutprintln("子线程1");
ThreadTesti+=1;
}
};
//开启线程1
t1start();
Thread t2=new Thread(){
public void run(){
try {
Threadsleep(1000);
} catch (InterruptedException e) {
eprintStackTrace();
}
Systemoutprintln("子线程2");
ThreadTesti+=1;
}
};
//开启线程2
t2start();
Thread t3=new Thread(){
public void run(){
Systemoutprintln("子线程3");
ThreadTesti+=1;
}
};
//开启线程3
t3start();
boolean res=true;
while(res){
//这里判断子线程是否运行完了
if(ThreadTesti==3){
Systemoutprintln("主线程结束");
res=false;
}
}
}
}
这个问题主要原因在线程设置和线程函数处理。
public partial class Form1: From{
Thread thread = null;
Socket socket = null
Socket listen = null;
public Form1()
{
InitializeComponent();
//初始化socket的代码略……
thread = new Thread(ThreadStart(MyThread));
//设置为后台线程!!!
threadIsBackground = true;
threadStart( );
}
}
private void MyThread()
{
while(true)
{
try
{
socketListen(50);
listen = socketAccept( );
//其他代码略……
}
catch{ }
}
private button1_Click(object sender, EventArgs e)
{
if (thread == null && threadThreadState!=ThreadStateRunning)
{
MessageBoxShow("不处于监听状态");
return;
}
if (threadIsAlive)
{
threadAbort();
}
if (listener != null)
{
listenerStop();
}
label7Text = "监听停止";
}
以上就是关于安卓多线程崩溃全部的内容,包括:安卓多线程崩溃、代码中如何保证子线程崩溃时,主线程依旧正常工作、C#多线程,在调用thread.Abort();后WinForm总会卡死,不知为何等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)