Tag: 活动生命周期

在Android中布局被销毁的方法

我有一个扩展LinearLayout的自定义组件,当布局被销毁或删除时,我需要执行某些语句。 (或即将被删除) 一种方法是检查一个活动的onPause()或onDestroy(),并调用自定义组件的方法。 但是我想从活动中移除这个开销。 所以,自定义组件本身可以处理布局分离。 但是我不知道在布局被移除时,find合适的方法来覆盖(检测事件)。 有没有办法来处理这个,或者我们需要使用onPause()和onResume()方法的活动?

活动生命周期 – onCreate调用每个redirect

我有一个简单的活动,加载在onCreate位图。 我发现,如果我旋转设备,我可以从日志中看到onCreate再次调用。 事实上,因为所有的实例variables都设置为默认值,我知道整个活动已被重新实例化。 旋转2次后,我得到一个FC,因为没有足够的内存可以分配给位图。 (活动的所有实例是否仍然活着?还是GC不够快?) @Override public void onCreate(Bundle savedInstanceState) { File externalStorageDir = Environment.getExternalStorageDirectory(); File picturesDir = new File(externalStorageDir, "DCIM/Camera"); File[] files = picturesDir.listFiles(new FilenameFilter(){ public boolean accept(File dir, String name) { return name.toLowerCase().endsWith(".jpg"); }}); if (files.length > 0) { Bitmap bm = BitmapFactory.decodeStream(new FileInputStream(files[0])); ImageView view = (ImageView) findViewById(R.id.photo); view.setImageBitmap(bm); } } 从我读的所有内容来看,onCreate应该在应用程序的生命周期中调用一次。 […]

在注销时,清除活动历史堆栈,防止“后退”button打开已login的活动

我的应用程序中的所有活动都需要用户login才能查看。 用户几乎可以从任何活动注销。 这是应用程序的要求。 在任何时候,如果用户注销,我想发送用户到loginActivity 。 在这一点上,我想这个活动是在历史堆栈的底部,所以按“返回”button返回到Android的主屏幕的用户。 我已经看到这个问题问几个不同的地方,都回答了类似的答案(我在这里概述),但我想在这里提出来收集反馈意见。 我已经尝试通过将其Intent标志设置为FLAG_ACTIVITY_CLEAR_TOP来打开Login活动,这似乎是按照文档中所述做的,但是并没有达到将Login活动放置在历史堆栈底部的目的,并且阻止了用户导航回到先前看到的login活动。 我也尝试使用android:launchMode="singleTop"作为清单中的login活动,但是这也不能完成我的目标(也似乎没有效果)。 我相信我需要清除历史堆栈,或完成所有以前打开的活动。 一种select是让每个活动的onCreate检查login状态,如果没有login,则finish() 。 我不喜欢这个选项,因为后退button仍然可以使用,在活动closures时返航。 下一个选项是维护一个链接列表,引用所有可以从任何地方静态访问的打开活动(也许使用弱引用)。 在注销时,我将访问这个列表并遍历所有以前打开的活动, finish()在每个活动上调用finish() 。 我很可能会很快开始实施这个方法。 但是,我宁愿使用一些Intent标志欺骗来实现这一点。 我会很高兴地发现,我可以满足我的应用程序的要求,而无需使用上述两种方法之一。 有没有办法通过使用Intent或清单设置,或者是我的第二个select,维护打开活动的LinkedList是最好的select? 还是有另一种select,我完全忽略了?