Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法停止android应用程序中的线程_Java_Android_Multithreading - Fatal编程技术网

Java 无法停止android应用程序中的线程

Java 无法停止android应用程序中的线程,java,android,multithreading,Java,Android,Multithreading,有类似的线程和,但它们不能解决我的问题 我想根据while循环中检查的标志值停止线程执行。在双嵌套内部匿名类实现中,servicesponse和secondservicesponse基于某些条件,标志值将设置为false 问题是将标志更改为false对while循环不可见,因此它会无休止地运行。我也尝试了Thread.interrupt,但那不起作用。如何通知while循环终止 public class MyCode implements Runnable{ public void termin

有类似的线程和,但它们不能解决我的问题

我想根据while循环中检查的标志值停止线程执行。在双嵌套内部匿名类实现中,
servicesponse
secondservicesponse
基于某些条件,标志值将设置为false

问题是将标志更改为false对while循环不可见,因此它会无休止地运行。我也尝试了
Thread.interrupt
,但那不起作用。如何通知while循环终止

public class MyCode implements Runnable{
public void terminate(){
    flag = false;
}

public void run() {

    boolean flag = true;
    
    SomeService someService = new SomeService();

    someService.getDistricts(new ServiceResponse() {

        @Override
        public void onResponse(String[] districts) {
            
            List<Centers> centersList = new ArrayList<>();

            while ( flag, also tried !Thread.interrupted() ) {
                
                for (int i = 0; i < districts.length; i++) {

                    someService.getCenters(districts[i], new SecondServiceResponse() {

                        @Override
                        public void onResponse(List<Centers> centers){
                            
                            if (centers.size() > 0) {
                                centersList.addAll(centers);
                            }

                            if (count == districts.length - 1) {

                                if ( someCondition) {
                                    flag = false; // does not work
                                    terminate();    // does not work
                                    Thread.interrupt();  //does not work
                                } else {                                        
                                    Thread.sleep();
                                }
                            }
                        }
                    });

                }
            }
        }
    });
}
公共类MyCode实现可运行{
公共无效终止(){
flag=false;
}
公开募捐{
布尔标志=真;
SomeService SomeService=新的SomeService();
someService.getDistricts(新服务响应(){
@凌驾
public void onResponse(字符串[]地区){
列表中心列表=新的ArrayList();
while(标志,也尝试了!Thread.interrupted()){
for(int i=0;i<1.length;i++){
someService.getCenters(地区[i],新的SecondServiceResponse(){
@凌驾
公共响应(列表中心){
如果(centers.size()>0){
中心列表。添加所有(中心);
}
if(count==districts.length-1){
如果(某些条件){
flag=false;//不起作用
terminate();//不起作用
Thread.interrupt();//不工作
}否则{
Thread.sleep();
}
}
}
});
}
}
}
});
}
}