Hi I have strange behavior of my activities. From MainActivity i start another activity and everything is cool. If I press back key the app doesn't go back to previous activity but it return me to desktop.
I have not called destory or finish in MainActivity when I have started the other activity.
Few hours before I change some services in the app and everything worked fine and suddenly it started to behave in this way. I have not change anything regarding activity calling or so.
public class EpgActivity extends Activity {
private EpgRectangleView epgRectangleView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
epgRectangleView = new EpgRectangleView(this);
epgRectangleView.setBackgroundColor(Color.BLUE);
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(epgRectangleView);
System.out.println("BOOSTED: " + epgRectangleView.isHardwareAccelerated());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
epgRectangleView.getEpgScreenService().onClick(keyCode);
epgRectangleView.invalidate();
epgRectangleView.clearAnimation();
return super.onKeyDown(keyCode, event);
}
}
Any idea what could cause this behavior?
public class MainActivity extends Activity {
private MainViewModel mainViewModel;
private ActivityMainBinding binding;
private DrawerLayout drawerLayout;
@Override
public void sendBroadcast(Intent intent) {
super.sendBroadcast(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View decorView = getWindow().getDecorView();
/*int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
*/
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_main);
initDataBinding();
}
private void initDataBinding() {
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
mainViewModel = MainViewModel.getInstance(this);
binding.setMainViewModel(mainViewModel);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerLayout.openDrawer(GravityCompat.START);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 100ms
drawerLayout.closeDrawer(Gravity.LEFT);
}
}, 1200);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// Toast.makeText(this,event.getKeyCode() + "",
Toast.LENGTH_SHORT).show();
if (keyCode == KeyEvent.KEYCODE_ENTER) {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(Gravity.LEFT);
} else {
drawerLayout.openDrawer(GravityCompat.START);
}
}
if (keyCode == KeyEvent.KEYCODE_X) {
startActivity(new Intent(this, EpgActivity.class));
}
return super.onKeyDown(keyCode, event);
}
}
Please keep in mind that object ViewModel doen't have anything that could harm activity lifecycle.