2015-09-16 3 views
0

Я хочу закрыть свое приложение с экрана всплеска автоматически после отображения сообщения, если нет доступного интернет-соединения или возникла какая-либо ошибка из-за ошибки ответа. Мой код закрывает приложение, но не может закрыть экран заставки. Пример приложения India (TOI) делает это. Как реализовать эту функцию.Выйдите из приложения с главного экрана и закройте его

моей заставка активность, как это ..

public class SplashScreen extends Activity { 

// Splash screen timer 
private static int SPLASH_TIME_OUT = 8000; 
static String MENU = null; 
ArrayList<String> ls = new ArrayList<String>(); 
private String[] categoryType; 
private boolean flag = true; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash); 

    // requesting data for menu items in navigation drawer 

    String url = "http://guwahatinow.com/?json=get_category_index"; 
    if (isOnline()) { 
     JsonObjectRequest jsonObjReqMenu = new JsonObjectRequest(Method.GET, 
       url, null, new Response.Listener<JSONObject>() { 

      public void onResponse(JSONObject response) { 
       try { 
        JSONArray jsonArrayMenu= response.getJSONArray("categories"); 
        Log.d("request", "menu"); 
        int loop; 
        ls.add("Top Stories"); 
        for (loop = 0; loop <jsonArrayMenu.length() ; loop++) { 

         JSONObject jsonObj = (JSONObject) jsonArrayMenu.get(loop); 
         String category =jsonObj.getString("title") ; 
         //menu.add(category); 
         ls.add(loop+1, category); 
         Log.d("menu added", category); 
         Log.d("element in ls", ls.get(loop)); 
        } 

        ls.add("Exit"); 

        int i = ls.size(); 
        categoryType = new String[i]; 
        for (int j = 0; j < i; j++) { 
         categoryType[j] = ls.get(j); 
        } 

       }catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }, 
     new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Toast.makeText(getApplicationContext(), "Please check your internet connection and try again...", Toast.LENGTH_LONG).show(); 
       VolleyLog.d("menu error", "Error: " + error.getMessage()); 
       flag = false; 
       //finish(); 
       android.os.Process.killProcess(android.os.Process.myPid()); 
       System.exit(0); 
       //System.exit(0); 

      } 
     }); 


     RequestQueue menuQueue = Volley.newRequestQueue(this); 
     menuQueue.add(jsonObjReqMenu); 

     if (flag) { 
      new Handler().postDelayed(new Runnable() { 

       /* 
       * Showing splash screen with a timer. This will be useful when you 
       * want to show case your app logo/company 
       */ 


       @Override 
       public void run() { 
        // This method will be executed once the timer is over 
        // Start your app main activity 

        Intent i = new Intent(SplashScreen.this, MainActivity.class); 
        i.putExtra(com.hamburger.menu.SplashScreen.MENU, categoryType); 
        startActivity(i); 

        Log.d("main activity called", "true"); 
        // close this activity 
        finish(); 
       } 
      }, SPLASH_TIME_OUT); 

     } else { 
      Toast.makeText(getApplicationContext(), "Internet connection error...", Toast.LENGTH_LONG).show(); 
      finish(); 
      System.exit(0); 
     } 
     /*new Handler().postDelayed(new Runnable() { 


     * Showing splash screen with a timer. This will be useful when you 
     * want to show case your app logo/company 



      @Override 
      public void run() { 
       // This method will be executed once the timer is over 
       // Start your app main activity 

       Intent i = new Intent(SplashScreen.this, MainActivity.class); 
       i.putExtra(com.hamburger.menu.SplashScreen.MENU, categoryType); 
       startActivity(i); 

       Log.d("main activity called", "true"); 
       // close this activity 
       finish(); 
      } 
     }, SPLASH_TIME_OUT);*/ 

    } else { 
     Toast.makeText(getApplicationContext(), "Please connect to internet...", Toast.LENGTH_LONG).show(); 

    } 
} 

protected boolean isOnline() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
     return true; 
    } else { 
     return false; 
    } 
} 

} 
+1

Включите достаточно кода, чтобы другие могли воспроизвести проблему. Для получения справки прочтите это: Как создать [Минимальный, Полный и Подтверждаемый пример.] (Http://stackoverflow.com/help/mcve) –

ответ

0

Вызова() метода на операцию, когда нет подключения в Вашем случае или любой другого в том, где вы хотите, чтобы закрыть приложение на отделки ,

0

В вашем блоке else else блокировки для проверки метода завершения интернет-вызова(). например

У вас есть вы код, как

if (isOnline()) { 

// your Code for calling API and starting timer 

} else { 
    Toast.makeText(getApplicationContext(), "Please connect to internet...", Toast.LENGTH_LONG).show(); 
} 

Изменить это

if (isOnline()) { 

// your Code for calling API and starting timer 

} else { 
    Toast.makeText(getApplicationContext(), "Please connect to internet...", Toast.LENGTH_LONG).show(); 
    finish(); 
} 
0

Привет, пожалуйста, замените код с ниже код, где вы использовали обработчик нитку

CountDownTimer m_countDownTimer; 
m_countDownTimer = new CountDownTimer(8000,1000) { 
      @Override 
      public void onTick(long millisUntilFinished) 
      { 

      } 

      @Override 
      public void onFinish() 
      { 
       if(!isFinishing()) 
       { 
        Intent i = new Intent(SplashScreen.this, MainActivity.class); 
        i.putExtra(com.hamburger.menu.SplashScreen.MENU, categoryType); 
        startActivity(i); 

        finish(); 
       } 
      } 
     }.start(); 

Отменить объект CountDownTimer в OnDestroy()

@Override 
    protected void onDestroy() 
    { 
     if(m_countDownTimer != null) 
     { 
      m_countDownTimer.cancel(); 
     } 
     super.onDestroy(); 
    }