Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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 当我离开活动并返回活动时,活动会不断重新启动_Java_Android_Multithreading - Fatal编程技术网

Java 当我离开活动并返回活动时,活动会不断重新启动

Java 当我离开活动并返回活动时,活动会不断重新启动,java,android,multithreading,Java,Android,Multithreading,我有两个活动,当我从活动A移动到B时,B保持重新启动或“刷新”,当我从B返回到A时,它也保持重新启动。代码非常大,我在这里发布了我认为问题原因的区域: Thread t = new Thread(new Runnable() { @Override public void run() { while (true) { deviceStatus(); try {

我有两个活动,当我从活动A移动到B时,B保持重新启动或“刷新”,当我从B返回到A时,它也保持重新启动。代码非常大,我在这里发布了我认为问题原因的区域:

  Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            while (true) {
                deviceStatus();

                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

        }

    });
    t.start();
这是deviceStatus()

公共无效设备状态(){
试一试{
RequestQueue RequestQueue=Volley.newRequestQueue(停用.this);
字符串URL=”http://gickuwait-dev.com/electionapi/api/DeviceStatus";
JSONObject jsonBody=新的JSONObject();
jsonBody.put(“设备PK”,设备ID2);
最后一个字符串requestBody=jsonBody.toString();
StringRequest StringRequest=new StringRequest(Request.Method.POST,URL,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
if(response.equals(“true”)){
意向意向=新意向(停用.this,投票.class);
星触觉(意向);
完成();
}else if(response.equals(“false”)){
}
//Toast.makeText(getApplicationContext(),response.toString(),Toast.LENGTH_SHORT).show();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.e(“截击”,error.toString());
}
}) {
@凌驾
公共字符串getBodyContentType(){
返回“application/json;charset=utf-8”;
}
@凌驾
公共字节[]getBody()抛出AuthFailureError{
试一试{
return requestBody==null?null:requestBody.getBytes(“utf-8”);
}捕获(不支持的编码异常uee){
wtf(“尝试使用%s获取%s的字节时不支持编码”,请求体,“utf-8”);
返回null;
}
}
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
弦乐;
字符串json=null;
试一试{
json=新字符串(response.data,HttpHeaderParser.parseCharset(response.headers));
}捕获(不支持的编码异常e){
e、 printStackTrace();
}
responseString=String.valueOf(json.trim();
ArrayList=新建ArrayList();
类型listType=newTypeToken(){}.getType();
list=new Gson().fromJson(responseString,listType);
device_Status=list.get(0.getIsActive().toString();
//Toast.makeText(getApplicationContext(),“”+device_Status+“null”,Toast.LENGTH_LONG.show();
返回Response.success(设备_状态,HttpHeaderParser.parseCacheHeaders(响应));
}
};
添加(stringRequest);
}捕获(JSONException e){
e、 printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}
}
}


在活动B中,我有相同的代码从数据库中检查设备状态,如有任何帮助,将不胜感激。

您可以使用Handle检查重复的任务

     private Handler delayHandler = new Handler();
    private Runnable runnable = new Runnable() {
            @Override
            public void run() {
deviceStatus();
      driverDelayHandler.postDelayed(runnable, 1000);

            }
        };
不要忘记取消on-Stop方法

 delayHandler.removeCallbacks(runnable);

此代码不足以解决问题。只有一根新的线。
deviceStatus()的功能是什么?编辑您的问题。信息不足,请提供更多信息。我编辑了我的问题t.start();您是否正在通过onPause方法向API发送请求?&根据您的Qus A->InActivate B->Vote activity?B为InActivate,Vote为A,我使用线程每1次刷新一次应用程序,检查设备是否激活,但活动似乎没有被刷新,正在重新启动
 delayHandler.removeCallbacks(runnable);