onDestroy вызывается каждый раз, когда включается экран

Мое приложение завершается каждый раз, когда оно возвращается из состояния отключения экрана. Я получаю всю информацию, которую делает мое приложение, но не могу понять, почему оно вызывает onDestroy. Я впервые вижу такое поведение в своих приложениях.

Мое основное действие расширяет tabActivity, потому что оно содержит tabhost. Я читал, что он должен продлить его, или он будет FC. Я не уверен, связана ли с этим моя проблема ?! Да, и в нем реализован Observer, но это не должно быть проблемой.

Вот логи:

07-21 09:57:53.247: VERBOSE/###(13180): onResume
07-21 09:57:53.267: VERBOSE/###(13180): onPause
07-21 09:57:59.967: VERBOSE/###(13180): onResume
07-21 09:58:00.597: VERBOSE/###(13180): onPause
07-21 09:58:00.597: VERBOSE/###(13180): onDestroy
07-21 09:58:00.637: VERBOSE/###(13180): onCreate

Безумие то, что он вызывает onDestroy чаще всего после того, как экран снова включается, и иногда у него достаточно времени, чтобы это до того, как экран погаснет. Но после того, как это продолжается снова, он снова делает то же самое ...

Я надеюсь, что у кого-то есть для меня совет или какая-либо информация о том, как решить эту проблему.

Не уверен, что это важно, но я использую sdk android 2.1-update1 для своего приложения.


РЕДАКТИРОВАТЬ:

Приложение тестируется на реальном устройстве Android.

Вот базовый код, в котором удалены все ненужные строки и информация:

package;
imports;

public class WebLabActivity extends TabActivity implements Observer{

#declerations

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.v("###", "onCreate");
    setContentView(R.layout.main);
    # initialize some basic things
}

@Override
public void onResume() {
    super.onResume();
    Log.v("###", "onResume");
}

@Override
public void onDestroy() {
    super.onDestroy();
    Log.v("###", "onDestroy");
}

@Override
public void onRestart() {
    Log.v("###", "onRestart");
    super.onRestart();
}

@Override
public void onPause() {
    Log.v("###", "onPause");
    super.onPause();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    Log.v("###", "onConfigurationChanged");
    super.onConfigurationChanged(newConfig);
}

@Override
public void update(Observable observable, Object data) {
    Log.v("###", "notifyManager.getWho() + " made an Update");
}


    private void initializeSidebarTabhost() {
    TabSpec 1 = tabHost.newTabSpec("1");
        TabSpec 2 = tabHost.newTabSpec("2");
    TabSpec 3 = tabHost.newTabSpec("3");
    TabSpec 4 = tabHost.newTabSpec("4");


    1.setIndicator("###");
    2.setIndicator("###");
    3.setIndicator("###");
    4.setIndicator("###");

    addIntents

    tabHost.addTab(1); //0
    tabHost.addTab(2); //1
    tabHost.addTab(3); //2
    tabHost.addTab(4); //3

    tabHost.getTabWidget().setCurrentTab(2);
}
}

EDIT2:

Хорошо, я протестировал свое приложение, ничего не инициализируя, а затем только с расширением активности или без реализации наблюдателя, но мои изменения не повлияло. Каждый раз, когда я переключаю телефон в спящий режим, а затем просыпаю его, onDestroy () получает вызов ?!


EDIT3:

Хорошо, я обнаружил кое-что интересное.

Сначала мой AndroidManifest .xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.tundem.###"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".###" android:label="@string/app_name" android:screenOrientation="landscape" android:theme="@android:style/Theme.Light.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Как только я удалю screenOrientation = "landscape" , приложение не будет уничтожаться каждый раз, когда я пробуждаю свое устройство. Я пробовал это более 10 раз, но больше не было вызовов onDestroy ()

Так что я думаю, что мне придется установить это в коде ?! Какие-нибудь подсказки или фрагменты кода?

24
задан clone45 22 March 2015 в 17:51
поделиться