簡體   English   中英

當我離開活動並返回活動時,活動不斷重新開始

[英]Activity keeps restarting when I leave the activity and come back to it

我有兩個活動,當我從活動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();

  public void deviceStatus(){
    try {
        RequestQueue requestQueue = Volley.newRequestQueue(InActivate.this);
        String URL = "http://gickuwait-dev.com/electionapi/api/DeviceStatus";
        JSONObject jsonBody = new JSONObject();

        jsonBody.put("device_PK", device_ID2);


        final String requestBody = jsonBody.toString();

        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {



                if(response.equals("true")){

                        Intent intent = new Intent(InActivate.this, Vote.class);
                        startActivity(intent);
                        finish();

                }else  if(response.equals("false")) {


                }
                // Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_SHORT).show();

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

                Log.e("VOLLEY", error.toString());
            }
        }) {
            @Override
            public String getBodyContentType() {
                return "application/json; charset=utf-8";
            }

            @Override
            public byte[] getBody() throws AuthFailureError {
                try {
                    return requestBody == null ? null : requestBody.getBytes("utf-8");
                } catch (UnsupportedEncodingException uee) {
                    VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8");
                    return null;
                }
            }

            @Override
            protected Response<String> parseNetworkResponse(NetworkResponse response) {

                String responseString;
                String json = null;

                try {
                    json = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                responseString = String.valueOf(json).trim();
                ArrayList<DeviceStatusResponse> list = new ArrayList<DeviceStatusResponse>();
                Type listType = new TypeToken<List<DeviceStatusResponse>>() {}.getType();
                list = new Gson().fromJson(responseString, listType);

                device_Status = list.get(0).getIsActive().toString();
                //  Toast.makeText(getApplicationContext(), ""+device_Status+" null ", Toast.LENGTH_LONG).show();
                return Response.success(device_Status, HttpHeaderParser.parseCacheHeaders(response));
            }
        };

        requestQueue.add(stringRequest);
    } catch (JSONException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

在活動B中,我使用相同的代碼從數據庫中檢查設備狀態,我們將不勝感激

您可以使用Handle來檢查重復的任務。

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

            }
        };

不要忘記取消onStop方法。

 delayHandler.removeCallbacks(runnable);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM