Tag: android lifecycle

NavUtils.navigateUpTo()不启动任何活动

我有两个活动 MainActivity DeepLinkActivity 我build立了一切使用NavUtils来导航像这里和这里build议的这里 。 我想要达到的是: 通过深层链接启动DeepLinkActivity 向上压 转到MainActivity 只要在最近的应用程序中有我的应用程序的任何任务,一切都很好。 但是,当我从最近的应用程序中删除我的应用程序时,它的行为如下所示: 从最近的应用程序中清除我的应用程序 通过深层链接启动DeepLinkActivity 向上压 我的应用程序closures,就像按下后 我debugging了代码,发现NavUtils.shouldUpRecreateTask()返回false 。 upIntent一切设置为正常,像我的Component设置。 但是, NavUtils.navigateUpTo()行为就像调用finish() 。 没有日志声明,什么都没有 任何想法,如何解决? AndroidManifest.xml中 <activity android:name=".DeepLinkActivity" android:parentActivityName="my.package.MainActivity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="my.package.MainActivity"/> <intent-filter> <!– Some intent filter –> </intent-filter> </activity> DeepLinkActivity.java @Override public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Intent upIntent = NavUtils.getParentActivityIntent(this); […]

如何在暂停时处理AsyncTask onPostExecute以避免IllegalStateException

我很欣赏在轮换更改上有关AsyncTask的大量发帖。 使用兼容性库时,遇到以下问题并试图closuresDialogFragment中的onPostExecute 。 我有一个AsyncTask显示进度DialogFragment ,然后在onPostExecuteclosures对话框,然后可能会抛出另一个DialogFragment 。 如果进度对话框正在显示,我把应用程序放入后台,我得到了以下的片段: 1) onPause 2) onSaveInstanceState 3) onPostExecute在其中我试图消除和调用一个对话框。 我得到一个IllegalStateException因为我试图有效地提交一个事务,当活动保存了它的状态,我明白这一点。 在我认为(也许不正确),我不会得到一个onPostExecute直到重新创build活动的onPostExecute 。 然而,当把应用程序放到后台时,我认为(当然肯定是错误的) onPostExectute在片段/活动暂停时不会被调用。 我的问题是,我的解决scheme是简单地在onPostExecute中检测到片段/活动已暂停,只需执行我需要在onResume做什么呢? 对我来说似乎有些丑陋。 在此先感谢彼得。 编辑1 需要支持2.1及以上版本 编辑2 我曾考虑使用FragmentTransaction:add显示对话框FragmentTransaction:add和FragmentTransaction:commitAllowingStateLoss但是这不是没有问题。

Android – 执行停止没有恢复的活动

当我把我的应用程序推到后台,并做一些其他的东西,如WhatsApp或短信,onResume它的效果很好。 但我最近发现,当我打开/启动Facebook应用程序,而我的应用程序是在后台,我不知道发生了什么… 但onResume,该应用程序行为不端… 不要做什么是需要做的,但是当我回到主页,回来它工作正常请帮助我..如何解决它? 带有所有消息的Logcat(不带filter) 10-15 12:53:59.899: I/Adreno-EGL(32033): Remote Branch: quic/LNX.LA.3.5.1_RB1.1 10-15 12:53:59.899: I/Adreno-EGL(32033): Local Patches: NONE 10-15 12:53:59.899: I/Adreno-EGL(32033): Reconstruct Branch: AU_LINUX_ANDROID_LNX.LA.3.5.1_RB1.04.04.02.048.018 + f2fd134 + NOTHING 10-15 12:53:59.924: D/OpenGLRenderer(32033): Enabling debug mode 0 10-15 12:54:00.000: V/AlarmManager(7677): sending alarm Alarm{42cfa490 type 3 android} 10-15 12:54:00.110: I/ActivityManager(7677): Displayed uk.org.humanfocus.hfi/.EvaluateTrainingActivity: +838ms 10-15 12:54:00.114: D/WifiStateMachine(7677): handleMessage: E msg.what=151572 […]

什么时候调用onSaveInstanceState()和onRestoreInstanceState()?

下图(来自官方文档 )描述了Android活动的众所周知的生命周期 : 另一方面,当系统销毁活动(例如,因为需要回收内存)时,活动状态有时会通过onSaveInstanceState()和onRestoreInstanceState()方法自动保存和恢复 ,如图所示由下图(也来自官方文档 ): 我知道onSaveInstanceState() 并不总是被调用,当一个活动即将被销毁。 例如,如果由于用户按下了“返回”button而被销毁,则活动状态不被保留。 但是在状态被保存和恢复的情况下, onSaveInstanceState() / onRestoreInstanceState()被调用, 什么时候被调用 ? 例如,根据上面的图, onRestoreInstanceState()可以在onStart()之前,或onStart()之后, onResume()之前或onResume()之后onStart() 。 同样, onSaveInstanceState()存在几种可能性。 那他们什么时候准确地打电话? 理想情况下,我希望看到一个组合图,显示活动生命周期状态和保存/恢复方法 (如果存在的话)。

onResume()之前调用onActivityResult()吗?

下面是我的应用程序的布局: onResume()用户被提示login 如果用户login,他可以继续使用应用程序3.如果用户随时登出,我想再次提示login 我怎样才能做到这一点? 这是我的MainActivity: @Override protected void onResume(){ super.onResume(); isLoggedIn = prefs.getBoolean("isLoggedIn", false); if(!isLoggedIn){ showLoginActivity(); } } 这是我的LoginActivity: @Override protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages array JSONObject response = json.getJSONObject("response"); status = […]

Android碎片onCreateView与onActivityCreated

我知道一个片段的视图层次结构必须在onCreateView中膨胀,但onCreateView什么其他function可以与什么应该等待onActivityCreated? 我目前的实现使用单独的一切活动,一个典型的活动在onCreate方法中完成大部分的工作,包括扩展视图,设置内容视图,用数据初始化各种小部件,设置监听器等等。 那么这可能全部移到onCreateView,或者应该把一些函数放入onActivityCreated方法呢?

Android静态对象生命周期

我正在创build事件search应用程序,我们从一个屏幕中设置search条件在另一个屏幕上填充,然后用户可以从第三屏幕编辑search条件,并进入第四屏幕。 为了实现上述任务,我使用了静态对象,它记住了应用程序的值,我不需要做任何额外的事情。 但是,如果关于Android的静态对象生命周期,如果低内存findandroid删除静态对象,恐怕我? 由于Android支持多任务处理,如果用户切换到另一个应用程序,并且当用户回来应用程序开始行事疯狂,多任务时,静态对象被删除? 任何想法 ?? 也build议通过单例方法保持静态对象是更好的方法?

onPause和onStop()之间的区别

从android doc这里http://developer.android.com/reference/android/app/Activity.html ,它说'活动进入前景'将调用onPause() ,'活动不再可见'将调用onStop() 。 是不是“活动进入前景”相同“活动不再可见”? 你能告诉我他们之间有什么区别吗?

一个活动和所有其他碎片

我正在考虑用Activity和其他managing all the fragments thru the activity Fragments屏幕来实现一个屏幕,并managing all the fragments thru the activity 。 这是一个好主意吗? 我的答案是否定的,但我仍想更清楚地了解这个想法。 这个主意有什么优点和缺点? 注意: 请不要给我片段和活动的链接。 编辑: 这里是关于碎片和活动的东西: 优点: 碎片意味着与活动一起使用作为一项子活动。 碎片不是活动的替代品。 碎片意味着可重用性(需要知道以何种方式实现可重用性)。 片段是编写代码以支持平板电脑和手机的最佳方式。 缺点: 我们需要实现接口来从碎片中获取数据。 对于对话,我们必须走很长的路要展示它。 如果我们不考虑平板电脑,为什么要用碎片呢? 活动和片段之间的起始时间差是多less?

Android:在什么情况下会出现一个对话框导致onPause()被调用?

Android Activities文档中的一个片段(向下滚动到“ 前景生命周期 ”行)说: 一个活动可以经常在前台进出,例如,当设备进入睡眠状态或出现对话框时,会调用onPause() 。 我不太明白这一点。 在什么情况下应该发生? 仅当对话框的上下文与要显示对话框的活动不同时,才会调用onPause() 。 编辑:添加代码示例来详细说明我的疑问 通过上面提到的文档引用,当下面代码中的AlertDialog (或只是Dialog )被显示时,我的活动的onPause()方法是否被调用? 显示对话框时是否应该看到“onPause called”日志条目? 但是我没有看到发生。 如果我已经正确理解了Android的生命周期,它也不应该这样做! 那么,这个文件指的是什么呢? public class LifeCycleTestActivity extends Activity { private static final String TAG = "LifeCycleTest"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new […]