Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Сразу после нажатия Power вызывается OnCreate. Почему? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Не корректная работа свернуть-развернуть приложение http://www.cyberforum.ru/android-dev/thread1694082.html
Здравствуйте. Я пишу ANE расширение для своего Air приложения. Работаю в эклипсе. Суть проекта в данной теме не важна, так как работает все, кроме ниже оговоренного. Код, который помогает...
Программирование Android CountDownTimer запуск в цикле У меня есть класс где я реализовал таймер: package com.lineup.intervaltimer; import android.os.CountDownTimer; public class Timer { private int time; //time in millies private final... http://www.cyberforum.ru/android-dev/thread1693954.html
Действие при сворачивании или при выходе Программирование Android
Добрый вечер. Вот такой небольшой вопрос. Какими действиями можно сделать так, чтобы к примеру когда пользователь сворачивал приложение выполнялись одни действия а при выходе из программы...
По поводу ListView, LinearLayout? Программирование Android
Скажите пожалуйста, люди добрые, как в Android Stiduo сделать таблицу для расписания занятий по группам или классам? Очень нужно, а не как не получается.(((( Если можно, киньте пару ссылок или...
Программирование Android Работаю над созданием мастера паролей, как обеспечить его безопасность? http://www.cyberforum.ru/android-dev/thread1693785.html
Здравствуйте, уважаемые программисты! Я работаю над созданием своего мастера паролей для одного конкурса. Чтобы хранить пароли безопасно, я придумал скачивать ключи от шифров программы с ftp...
Программирование Android Не вижу абстрактных методов в классе BaseAdapter Когда создаю свой класс, наследующий BaseAdapter, требуется реализовать 4 абстрактных метода: getCount(), getItem(), getItemId, getView. Вопрос:почему в классе BaseAdapter нету этих методов?? Они не... подробнее

Показать сообщение отдельно
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 171

Сразу после нажатия Power вызывается OnCreate. Почему? - Программирование Android

25.03.2016, 10:06. Просмотров 205. Ответов 2
Метки (Все метки)

Здравствуйте. Пишу вообще под Mono.Android, но в той ветке глухо, да и код очень похож на Java, так что это я думаю не проблемма, да и вопрос не в этом. В общем: основное Activity наследуется от TabActivity (знаю, что устарело, но так надо..) В OnCreate, ничего особенного нет, создаются вкладки, загружается ранее сохраненная информация:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);
            this.RequestWindowFeature (WindowFeatures.NoTitle); //Создать вьюху без заголовка
            mSettings =  GetSharedPreferences(APP_PREFERENCES, FileCreationMode.Private);
 
            Load_SharedPreferences();
 
 
            SetContentView(TabHost);
            CreateTab(typeof(Connect_Activity), "Подключение",     GetString(Resource.String.connection));
            CreateTab(typeof(Main_Input_data_Activity), "Главная", GetString(Resource.String.main));
            CreateTab(typeof(Settings_Activity), "Настройки",      GetString(Resource.String.settings) );
            if( LayoutInflater.Inflate(Resource.Layout.Graf_act, null).FindViewById<ImageButton>(Resource.Id.MenuButton)!=null) //если нет кнопки меню у графиков, т.е. запустили на планшете
                CreateTab(typeof(Grafics_Activity), "Графики", GetString(Resource.String.graphics));
            else
                CreateTab(typeof(Grafics_Activity_large), "Графики", GetString(Resource.String.graphics)); //постоянно отображаемая панель меню графиков
 
            Change_TabHost_Text_size ();
 
 
            if(current_tag!="")
            {
                TabHost.SetCurrentTabByTag (current_tag); //выделить ту вкладку, которая была сохранена перед выключением
                current_tag="";
            }
 
            //---произвести загрузку серриализированного класса singletone с введенными пользователем данными
            try
            {
                Serializer.LoadFromBinnary<All_user_entered_info>(System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), File_name_user_entered_info));
            }
            catch{}
 
            //экземпляр класса PowerManager.WakeLock  чтоб не гас экран 
            var _powerManager = (PowerManager) GetSystemService(PowerService);
            sWakeLock = _powerManager.NewWakeLock(WakeLockFlags.ScreenBright, "MyTag");
        }
        
        
        
        private void CreateTab(Type activityType, string tag, string label)
        {
            var intent = new Intent(this, activityType);
            intent.AddFlags(ActivityFlags.NewTask);
            var spec = TabHost.NewTabSpec(tag);
            spec.SetIndicator (label); //, drawableIcon);
            spec.SetContent(intent);
            TabHost.AddTab(spec);
        }

В OnPause и OnDestroy, тоже ничего криминального не происходит:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
protected override void OnPause ()
        {
            base.OnPause ();
 
            // Запоминаем данные
            ISharedPreferencesEditor editor = mSettings.Edit();
            editor.PutString(APP_PREFERENCES_LANG, current_lang);
            if(!String.IsNullOrWhiteSpace( Main_Input_data_Activity.Current_Fragment))
                editor.PutString (APP_PREFERENCES_CURRENT_FRAGMENT, Main_Input_data_Activity.Current_Fragment);
            editor.PutString(APP_PREFERENCES_THEME, current_theme);
            if(current_tag!="")
                editor.PutString(APP_PREFERENCES_SELECT_TAB, TabHost.CurrentTabTag);
            editor.Apply ();
 
            //произвести серриализацию класса singletone с введенными пользовательскими данными в файл
            Serializer.SaveToBinnary<All_user_entered_info> (System.IO.Path.Combine (System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal), File_name_user_entered_info), All_user_entered_info.Instance);
        }
 
//выключение BT при завершении приложения
        protected override void OnDestroy ()
        {
            base.OnDestroy ();
 
            if ((My_Bluetooth.mBluetoothAdapter.Enable ()) & (Main_tabs_Activity.restart_flag == false)) //если БТ включен и это выключение, а не перезапуск для смены темы, то
                My_Bluetooth.mBluetoothAdapter.Disable ();
            
            Main_tabs_Activity.restart_flag = false; //отчистить флаг
        }

И всё отлично работает, но как только я нажимаю хардовую кнопку "Power" на тел. (в каком бы Actyvity или фрагменте я не находился) гаснет экран и буквально через пол секунды сам вызывается OnCreate этой, главной активити! Естественно он опять пытается создать табы. И входя в конструктор первой активности-вкладки (класс Connect_Activity) в её SetContentView (Resource.Layout.Connect_act); получаем исключение Android.Content.Res.Resources+NotFoundException. И приложение сыпется... Почему вообще так происходит? Из-за чего вообще может вызыватся OnCreate при погасании экрана?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru