每次從屏幕關閉狀態返回時,我的應用程序都會被終止。我獲取我應用程序所做的所有信息,但是我找不到它爲什麼要調用onDestroy。這是我第一次在我的應用程序中看到這種行爲。onDestroy每次進入屏幕時都會調用
我的主要活動擴展了tabActivity,因爲它包含一個tabhost。我讀過它必須擴展它或FC。我不確定我的問題是否與此有關?哦,它實現了觀察者,但這應該沒有問題。
下面是日誌:
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次數最多的屏幕再次熄滅後,有時它有足夠的時間來做到這一點,屏幕熄滅之前。但在它再次發生後,它再次做同樣的事情...
我希望有人對我有任何提示或有關如何解決此問題的任何信息。
我不確定這是否重要,但我使用android 2.1-update1 sdk作爲我的應用程序。
編輯:
應用程序獲取一個真正的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()
get的名稱?!
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()
所以我認爲我將不得不在設置代碼?!任何提示或代碼段?
這聽起來很奇怪,這是在模擬器中,你可以發佈一個展示行爲的skelton代碼框架嗎? – Idistic
在模擬器上,我還沒有嘗試過。我在我的真實Android手機上得到這種行爲,所以沒有模擬器。你的意思是什麼展示了這種行爲。 我會在接下來的幾分鐘內發佈一些代碼。 – mikepenz
我的意思是一些代碼,可驗證的再現問題,有時人們提出片段,忽略了真正的問題 – Idistic