@@ -129,6 +129,7 @@ public class ZulipActivity extends BaseActivity implements
129
129
private ZulipApp app ;
130
130
131
131
private boolean logged_in = false ;
132
+ private boolean backPressedOnce = false ;
132
133
133
134
private ZulipActivity that = this ; // self-ref
134
135
@@ -146,6 +147,7 @@ public class ZulipActivity extends BaseActivity implements
146
147
private AsyncGetEvents event_poll ;
147
148
148
149
private Handler statusUpdateHandler ;
150
+ private Runnable statusUpdateRunnable ;
149
151
150
152
public MessageListFragment currentList ;
151
153
private MessageListFragment narrowedList ;
@@ -406,7 +408,7 @@ public void onItemClick(AdapterView<?> parent, View view,
406
408
407
409
// send status update and check again every couple minutes
408
410
statusUpdateHandler = new Handler ();
409
- Runnable statusUpdateRunnable = new Runnable () {
411
+ statusUpdateRunnable = new Runnable () {
410
412
@ Override
411
413
public void run () {
412
414
AsyncStatusUpdate task = new AsyncStatusUpdate (
@@ -1433,12 +1435,28 @@ public void clearChatBox() {
1433
1435
}
1434
1436
1435
1437
public void onBackPressed () {
1436
- if (narrowedList != null ) {
1437
- narrowedList = null ;
1438
- getSupportFragmentManager ().popBackStack (NARROW ,
1438
+ if (narrowedList == null ) {
1439
+
1440
+ if (backPressedOnce ) {
1441
+ finish ();
1442
+ }
1443
+
1444
+ backPressedOnce = true ;
1445
+ Toast .makeText (this , R .string .press_again_to_exit , Toast .LENGTH_SHORT ).show ();
1446
+ statusUpdateRunnable = new Runnable () {
1447
+ @ Override
1448
+ public void run () {
1449
+ backPressedOnce = false ;
1450
+ }
1451
+ };
1452
+
1453
+ statusUpdateHandler .postDelayed (statusUpdateRunnable , 2000 );
1454
+
1455
+
1456
+ } else {
1457
+ narrowedList = null ;
1458
+ getSupportFragmentManager ().popBackStack (NARROW ,
1439
1459
FragmentManager .POP_BACK_STACK_INCLUSIVE );
1440
- } else {
1441
- super .onBackPressed ();
1442
1460
}
1443
1461
}
1444
1462
@@ -1804,6 +1822,7 @@ protected void onDestroy() {
1804
1822
super .onDestroy ();
1805
1823
if (statusUpdateHandler != null ) {
1806
1824
statusUpdateHandler .removeMessages (0 );
1825
+ statusUpdateHandler .removeCallbacks (statusUpdateRunnable );
1807
1826
}
1808
1827
}
1809
1828
0 commit comments