【发布时间】:2011-07-13 21:45:25
【问题描述】:
源于这篇文章more efficient way of updating UI from service 我想知道我是否可以更进一步并实现以下内容。不过,我可能对我的应用程序生命周期有误解。
public class MyApplication extends Application {
private static final String TAG = MyApplication.class.getSimpleName();
private static Stack<MyActivity> mActivityStack = new Stack<MyActivity>();
private static String mTopActivity = "none";
public static void pushActivity(MyActivity activity)
{
mActivityStack.push(activity);
mTopActivity = activity.getClass().getSimpleName();
Log.i(TAG, "push::"+mTopActivity);
}
public static void popActivity()
{
Log.i(TAG, "pop::"+mTopActivity);
mActivityStack.pop();
}
@Override
public void onLowMemory() {
super.onLowMemory();
Log.w(TAG, "low memory!!!");
Log.w(TAG, "Current::"+mTopActivity);
}
}
public class MyActivity extends Activity
{
private static final String TAG = MyActivity.class.getSimpleName();
public void onCreate(Bundle last)
{
super.onCreate(last);
MyApplication.pushActivity(this);
}
public void onDestroy()
{
super.onDestroy();
MyApplication.popActivity();
}
}
堆栈在应用程序的生命周期内是否有效?
正如 CommonsWare 所说,这没有成功。另外,从 Activity 派生不是一个好主意,因为你还必须派生 listactivity、preferenceactivity 等。显然,我认为这不会解决任何问题,它只是 android 生命周期中的一个实验。
【问题讨论】:
-
好吧,一目了然,因为您从未真正创建过 Stack
类型的对象,因此 mActivityStack 将始终为空。运行此代码时,我希望 push/popActivity 出现空指针异常。 -
忘记将名称编辑为 MyActivity =x。另外,忘记实例化我的堆栈 =x。虽然更新和修复。
标签: android-activity stack lifecycle android