menion.android.whereyougo.gui.extension.CustomActivity.java Source code

Java tutorial

Introduction

Here is the source code for menion.android.whereyougo.gui.extension.CustomActivity.java

Source

/*
  * This file is part of WhereYouGo.
  *
  * WhereYouGo is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  *
  * WhereYouGo is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with WhereYouGo.  If not, see <http://www.gnu.org/licenses/>.
  *
  * Copyright (C) 2012 Menion <whereyougo@asamm.cz>
  */

package menion.android.whereyougo.gui.extension;

import menion.android.whereyougo.settings.Settings;
import menion.android.whereyougo.utils.Const;
import menion.android.whereyougo.utils.Logger;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.ViewGroup;

public class CustomActivity extends FragmentActivity {

    protected Handler handler;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Logger.v(getLocalClassName(), "onCreate(), id:" + hashCode());
        try {
            super.onCreate(savedInstanceState);
            // create handler
            handler = new Handler();
            customOnCreate(this);
        } catch (Exception e) {
            Logger.e(getLocalClassName(), "onCreate()", e);
        }
    }

    protected static void customOnCreate(Activity activity) {
        //Logger.v(activity.getLocalClassName(), "customOnCreate(), id:" + activity.hashCode());
        // set main activity parameters
        if (!(activity instanceof CustomMain)) {
            //   Settings.setLanguage(this);
            Settings.setScreenBasic(activity);
        }

        // set screen size
        Const.SCREEN_WIDTH = activity.getWindowManager().getDefaultDisplay().getWidth();
        Const.SCREEN_HEIGHT = activity.getWindowManager().getDefaultDisplay().getHeight();
    }

    @Override
    public void onStart() {
        Logger.v(getLocalClassName(), "onStart(), id:" + hashCode());
        try {
            super.onStart();
            customOnStart(this);
        } catch (Exception e) {
            Logger.e(getLocalClassName(), "onStart()", e);
        }
    }

    protected static void customOnStart(Activity activity) {
        //Logger.v(activity.getLocalClassName(), "customOnStart(), id:" + activity.hashCode());
        Settings.setScreenFullscreen(activity);
    }

    @Override
    protected void onResume() {
        Logger.v(getLocalClassName(), "onResume(), id:" + hashCode());
        try {
            super.onResume();
            customOnResume(this);
            // set values again, this fix problem when activity is started after
            // activity in e.g. fixed portrait mode
            Const.SCREEN_WIDTH = getWindowManager().getDefaultDisplay().getWidth();
            Const.SCREEN_HEIGHT = getWindowManager().getDefaultDisplay().getHeight();
        } catch (Exception e) {
            Logger.e(getLocalClassName(), "onResume()", e);
        }
    }

    protected static void customOnResume(Activity activity) {
        //Logger.v(activity.getLocalClassName(), "customOnResume(), id:" + activity.hashCode());
        // set current activity
        Settings.setCurrentActivity(activity);
        // enable permanent screen on
        Settings.enableWakeLock();
    }

    @Override
    protected void onPause() {
        Logger.v(getLocalClassName(), "onPause(), id:" + hashCode());
        try {
            super.onPause();
            customOnPause(this);
        } catch (Exception e) {
            Logger.e(getLocalClassName(), "onPause()", e);
        }
    }

    protected static void customOnPause(Activity activity) {
        //Logger.v(activity.getLocalClassName(), "customOnPause(), id:" + activity.hashCode());
        // activity is not in foreground
        if (Settings.getCurrentActivity() == activity) {
            Settings.setCurrentActivity(null);
        }
        // disable location
        MainApplication.onActivityPause();
    }

    @Override
    public void onDestroy() {
        Logger.v(getLocalClassName(), "onDestroy(), id:" + hashCode());
        try {
            super.onDestroy();

            if (getParentViewId() != -1) {
                unbindDrawables(findViewById(getParentViewId()));
                System.gc();
            }
        } catch (Exception e) {
            Logger.e(getLocalClassName(), "onDestroy()", e);
        }
    }

    private void unbindDrawables(View view) {
        if (view == null)
            return;
        if (view.getBackground() != null) {
            view.getBackground().setCallback(null);
        }
        if (view instanceof ViewGroup) {
            for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
                unbindDrawables(((ViewGroup) view).getChildAt(i));
            }
            ((ViewGroup) view).removeAllViews();
        }
    }

    public int getParentViewId() {
        return -1;
    }
}