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上的代码没有问题。根本问题不是字符串比较,而是无法停止在开始意图出现时创建的线程