スクリーンオフ状態から戻るたびに、アプリケーションが強制終了されます。アプリが行うすべての情報を取得しましたが、なぜonDestroyが呼び出されるのかわかりません。アプリケーションでこの動作が見られるのは初めてです。
タブホストが含まれているため、私のメインアクティビティはtabActivityを拡張します。私はそれがそれを拡張しなければならないことを読みました、さもなければそれは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を呼び出すことです。また、画面が消える前にこれを行うのに十分な時間がある場合もあります。しかし、それが再び続いた後、それは再び同じことをします...
誰かが私のためのヒントやこの問題を解決する方法についての情報を持っていることを願っています。
これが重要かどうかはわかりませんが、アプリケーションにはandroid2.1-update1sdkを使用しています。
編集:
アプリケーションは実際の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()
だから私はこれをコードで設定する必要があると思いますか?!ヒントやコードはありますか?