2016-08-16 2 views
0

Я выполнил свое приложение, чтобы выйти, когда нажата кнопка «Назад». Когда я выхожу из приложения, я обычно получаю прерывистый выход, где отображаются последние приложения, прежде чем приложение будет правильно завершено. Что может быть причиной этой проблемы? Вот мой код.Choppy exit при нажатии на кнопку назад

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 
private Button discover,why,enterprise,business,services,office,inquire,connect; 
TextView offer; 
Intent p; 
private static long back_pressed_time; 
private static long PERIOD = 2000; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    offer = (TextView)findViewById(R.id.offer); 
    discover = (Button) findViewById(R.id.discover_us); 
    why = (Button) findViewById(R.id.why_us); 
    enterprise = (Button) findViewById(R.id.enterprise_soln); 
    business = (Button) findViewById(R.id.business_soln); 
    services = (Button) findViewById(R.id.services); 
    office = (Button) findViewById(R.id.office_automation); 
    inquire = (Button) findViewById(R.id.inquire); 
    connect = (Button) findViewById(R.id.connect); 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) 
    { 
     case R.id.discover_us: 
      p = new Intent(this,DiscoverUs.class); 
      startActivity(p); 
      break; 
     case R.id.why_us: 
      p = new Intent(this,WhyTechbiz.class); 
      startActivity(p); 
      break; 
     case R.id.office_automation: 
      p = new Intent(this,Office_Automation.class); 
      startActivity(p); 
      break; 
     case R.id.services: 
      p = new Intent(this,Services.class); 
      startActivity(p); 
      break; 

     case R.id.enterprise_soln: 
      p = new Intent(this,Enterprise_Soln.class); 
      startActivity(p); 
      break; 
     case R.id.business_soln: 
      p = new Intent(this,Business_Soln.class); 
      startActivity(p); 
      break; 
     case R.id.inquire: 
      p = new Intent(this,Inquire.class); 
      startActivity(p); 
      break; 
     case R.id.connect: 
      p = new Intent(this,Connect.class); 
      startActivity(p); 
      break; 
    } 
    overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 
} 


@Override 
public void onBackPressed() { 
    if (back_pressed_time + PERIOD > System.currentTimeMillis()) { 
    super.onBackPressed(); 
} else { 
    back_pressed_time = System.currentTimeMillis(); 
    Toast.makeText(MainActivity.this, "Press once again to exit!", Toast.LENGTH_SHORT).show(); 
} 
} 
+1

Я не думаю, что этого фрагмента кода достаточно, чтобы отследить вашу проблему. Есть ли что-то еще в вашей «Активности», когда вы нажимаете кнопку «Назад»? –

+0

Пожалуйста, определите _ «choppy exit» _. –

+0

Choppy означает, что он замораживает среднюю закрытие приложения, показывая недавний список приложений, а затем, в конце концов, покидает – HM88

ответ

0

Ваш код выглядит хорошо, ваша ОС/устройство должно быть медленным.

Если есть какой-либо другой код, который выполняется с вашего onBackPressed(), который вы не разместили здесь, это может быть причиной того, что все выглядит хорошо.

+0

. Отредактированный мой код взгляните. Не может быть моим телефоном, так как он имеет 3 гигабайта, плюс я попробовал его на разных телефонах. – HM88

1

Когда вы заканчиваете деятельность просто называют также super.onBackPressed()

1

Пожалуйста, попробуйте следующее:

@Override 
public void onBackPressed() { 

    if (back_pressed_time + PERIOD > System.currentTimeMillis()) { 
     super.onBackPressed(); 
    } else { 
     back_pressed_time = System.currentTimeMillis(); 
     Toast.makeText(MainActivity.this, "Press once again to exit!", Toast.LENGTH_SHORT).show(); 
    } 
} 

Вызов finish() не является хорошим выбором для выхода активности, вы могли бы просто использовать super.onBackPressed().

+0

Все еще нет разницы – HM88

0

Решил, установив windowIsTranslucent в false в моей теме приложения.

0

Во-первых, вы должны инициализировать back_pressed_time и установить PERIOD = 3000 на последнем шаге, эта строка должна быть верхней
back_pressed_time = System.currentTimeMillis(); So:

@Override 
public void onBackPressed() { 

back_pressed_time = System.currentTimeMillis(); 
    if (back_pressed_time + PERIOD > System.currentTimeMillis()) this.finish(); 
    else Toast.makeText(MainActivity.this, "Press once again to exit!", Toast.LENGTH_SHORT).show(); 

} 
Смежные вопросы