Articles of ondestroy

Android在方向更改时保存状态

我有一个Android应用程序,它维护有关行进距离,时间流逝等的状态。这个状态我可以方便地存储在一个对象中,并在用户更改屏幕时Android调用onDestroy()时在Bundle中存储对该对象的引用方向,然后恢复onCreate(Bundle savedBundle)中的状态。 但是,我在屏幕上的Buttons和EditText对象中也有一些状态,我希望通过屏幕方向保持这种状态。 例如,在onStart(Bundle savedBundle)中我调用: _timerButton.setBackgroundColor(Color.GREEN); _pauseButton.setBackgroundColor(Color.YELLOW); _pauseButton.setEnabled(false); 然后在我的应用程序的整个操作过程中,这些按钮的颜色/启用状态将被更改。 是否有更方便的方法来持久保存用户界面项(EditText,Button对象等)的状态,而无需手动保存/恢复每个按钮的每个属性? 在屏幕方向之间手动管理这种types的状态感觉非常笨拙。 谢谢你的帮助。

Android应用在被杀时不会调用“onDestroy()”(ICS)

我正在开发一个使用蓝牙通信的Android应用程序(使用一个propetary协议),我需要抓住应用程序被杀的那一刻。 我想使用“onDestroy()”方法,但每次应用程序被杀死时都不会调用它。 我注意到,当我按下后退按钮时会调用它,有时只有在我从任务管理器中删除应用程序时才会调用它。 问题是:我怎样才能抓住应用程序被杀之前的那一刻? 这是我尝试使用的代码: @Override public void onDestroy() { sendMessage(msg); Log.d(“SampleApp”, “destroy”); super.onDestroy(); } @Override public void finish(){ sendMessage(msg); Log.d(“SampleApp”, “finish”); super.finish(); } 不幸的是,每次从任务管理器关闭应用程序时都不会调用finish()并且不会调用onDestroy。 我怎么处理这个?

Android Activity onDestroy()并不总是被调用,如果被调用,则只执行部分代码

并不总是调用onDestroy()。 如果被调用,则只执行部分代码。 而且大部分时间在LogCat中我只看到消息“首先调用destroy的gps状态”。 这是为什么? protected void onDestroy(){ super.onDestroy(); Log.d(“on destroy called”, “gps state on destroy called first”); editor.putBoolean(“gpsOn”, false); Log.d(“on destroy called”, “gps state on destroy called second”); editor.commit(); Log.d(“on destroy called”, “gps state on destroy called third”); stopRouteTracking(); Log.d(“on destroy called”, “gps state on destroy called fourth”); }

如何区分是否将onDestroy()作为配置更改序列的一部分进行调用?

在我的Activity中,需要在onDestroy()中销毁一些外部事物(服务)。 但是当配置发生变化时(例如键盘翻转),我不希望这样,因为它会立即恢复。 所以问题是:如何区分onDestroy()是否是由Back-key press或部分配置更改过程引起的? 在@ CommonsWare的回答之后它会非常简单)类似于: @Override onDestroy() { if (mIsChangeConfig == true) { mIsChangeConfig = false: } else { stopService(); } } @Override onRetainNonConfigurationInstance() { mIsChangeConfig = true; }

在Activity被杀死并重新创建后,片段仍然存在

我有一个FragmentActivity(支持片段),我通过代码创建片段并将它们放入FrameLayouts。 到目前为止一切正常。 现在,如果我离开应用程序返回一切正常,只要系统不会杀死我的活动(或者我使用DDMS中的停止按钮)。 如果发生这种情况,则不会调用任何内容,我的Activity也会被杀死。 没有调用onDestroy。 因此,当我重新打开我的应用程序时,所有碎片仍然存在,我得到NullPointerExeptions因为他们尝试做他们的工作。 片段不应该存在于App的这种状态中,这对我来说是个问题。 我在backStack中不需要它们,所以我不把它们放在那里,不能调用popBackStack()来摆脱它们。 如何在onCreate()中重置FragmentManager,或者只是确保片段也被销毁?

如何恢复通知而不重新创建活动?

我以为我已经想到了这个问题,但在对这个问题进行了一些调试之后: 如何使通知无法删除/不可删除我刚刚意识到我的活动仍以随机顺序进入onCreated()和onDestroyed()。 我的活动清单: 我也尝试过launchmodes singleTask,singleInstance。 我的通知意图代码: Intent intent = new Intent(context, MyClass.class); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); //intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); //intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 正如你所看到的,我已经尝试过看起来可能相关的每一面旗帜,但没有运气…… 这会产生一些不需要的伪像,例如每次单击通知时重新启动AlarmManager并触发alarmmanager start-task。 我想避免这个。 有什么建议么? 编辑:我知道有很多像这样的问题,但提供的解决方案似乎没有在这里做到这一点……:/ Edit2:根据要求,这是我的class级: package ***.***.***; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Build; import android.os.Bundle; import android.annotation.TargetApi; import android.app.Activity; import android.app.AlarmManager; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import […]

Android:将完成()总是调用onDestroy()?

简单的问题:你能确定finish()会调用onDestroy()吗? 我还没有find任何确认。

每次屏幕亮起时都会调用onDestroy

每次从屏幕关闭状态返回时,我的应用程序都会被杀死。 我获取了我的应用程序所做的所有信息,但我无法find它调用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,有时它有足够的时间在屏幕关闭之前执行此操作。 但在它再次发生之后它再次发生了同样的事情…… 我希望有人给我一个提示或任何有关如何解决此问题的信息。 我不确定这是否重要,但我使用android 2.1-update1 sdk作为我的应用程序。 编辑: 该应用程序在真正的Android设备上进行测试。 以下是一些基本代码,其中删除了所有不必要的行和信息: package; imports; public class WebLabActivity extends TabActivity implements Observer{ #declerations /** Called when the […]

Activity OnDestroy从未调用过?

我在ListActivity中使用以下代码 // a separate class in project public class MyActivity extends ListActivity { // some common functions here.. } public class SelectLocation extends MyListActivity { public void onCreate(Bundle savedInstance) { // here….. } @Override protected void onDestroy() { super.onDestroy(); if (adap != null) adap = null; if (list != null) list = null; System.gc(); } […]

如何自动重新启动一个杀死的服务?

当一个服务已经死亡,如何自动重新启动? 有时甚至没有调用onDestroy()