Java 为什么我不能在android中停止我的线程
我有一个线程类:Java 为什么我不能在android中停止我的线程,java,android,multithreading,Java,Android,Multithreading,我有一个线程类: private class Mythread extends Thread{ boolean mfinish = false; private void finish(){ mfinish = true; interrupt(); } while(!mfinish){ do my work} } 我使用SparseArray mThreadArray来保存线程 我在我的服务a中
private class Mythread extends Thread{
boolean mfinish = false;
private void finish(){
mfinish = true;
interrupt();
}
while(!mfinish){ do my work}
}
我使用SparseArray mThreadArray来保存线程
我在我的服务a中注册了一个BroadcastReceiver:
private BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent) {
if(intent.getAction().euqals(STOP_THREAD)){
uid = bundle.getInt("uid");
pid = bundle.getInt("pid");
tid = bundle.getInt("tid");
if(mThreadArray.get(tid)==null){
Mythread samplThread = new Mythread(pid, tid);
mThreadArray.put(tid,sampleMainThread);
sampleThread.start();
}
}
if(intent.getAction().equals(STOP_THREAD)){
uid = bundle.getInt("uid");
pid = bundle.getInt("pid");
tid = bundle.getInt("tid");
if(mThreadArray.get(tid)!=null){
mThreadArray.get(tid).finish();
mThreadArray.remove(tid);
}
}
}
}
在另一个应用程序B中,创建或结束线程时进行广播。
然而,在我的服务A中,我发现当停止意图出现时,无法停止创建的线程
有人知道原因吗?永远不要使用==来比较字符串。始终使用等于。。。或者equalsIgnoreCase…作为旁白,您通常希望您的类实现可运行,而不是扩展线程。另外,intent.geAction实际上不应该是intent.geAction吗?类似于,if stop.equalsignorecaseentent.getAction{另外,我会使用一个字符串常量,public static final String STOP=STOP;以避免任何拼写错误的问题。我将代码手动写入编辑框,因此产生了一些拼写问题。但是IDE上的代码没有问题。根本问题不是字符串比较,而是无法停止在开始意图出现时创建的线程