Sha*_*dog 0 android exit android-activity
我正在写一个包含4个活动的简单应用程序.我会快速描述它,以便你了解我正在努力实现的目标.
第一个活动 - MainActivity有一些TextEdit字段,它们收集2个输入参数 - reps数和暂停时长(以秒为单位).一个按钮将我带到第二个活动:WorkActivity - 所有这一切都是开始计数,直到我按下'done'然后它调用PauseActivity,或者如果它是最后一个rep,则调用OverviewActivity.PauseActivity将秒数递减到下一个rep,然后发出哔哔声让我知道它的时间,并再次显示WorkActivity.OverviewActivity显示每个代表的总锻炼时间和时间.
它还有一个按钮,应该只是结束应用程序.我知道退出你的应用程序并不符合Android应用程序生命周期理念,但我需要它(或类似的事情发生).我有一个单例控制器类,可以跟踪代表并记录时间.我可以杀死这个实例(或伪造它的死亡,因此会创建一个新实例),但是当我"关闭"应用程序然后再次单击它时,我得到的是OverviewActivity而不是预期的MainActivity.
我期望调用System.exit(0)会处理事情,只需关闭应用程序,因此它必须在重新运行时重新初始化.相反,整个事情开始表现得非常狡猾.当我单击调用System.exit(0)的按钮时,而不是消失我的应用程序重新启动类型.它显示了WorkActivity,并开始计数.当我单击完成按钮(应该将我带到PauseActivity)时,我得到一个例外.应用程序崩溃 - 然后再次重新启动.这将重复,直到我点击主屏幕按钮,应用程序仍然处于这种无用状态,直到我在应用程序管理器中杀死它.
另外,我不完全确定,但我认为System.exit(0)调用(或后续崩溃)会断开调试器的连接,因为之后我无法让Eclipse访问任何断点.这意味着我无法真正看到发生的实际异常.
有人可以对此有所了解吗?有没有办法正确使用System.exit(0)?
如果没有这个选项,处理这个问题的正确方法是什么?我需要应用程序: - 当我点击最后的'完成'按钮时,主页按钮或后退按钮,处理控制器,(如果可能的话,还有其他所有内容),停止计数(如果有任何计时器正在运行)并基本上自行关闭当我再次单击应用程序的图标时,向我显示一个新实例(或一个显示为新的实例),使用MainActivity来迎接我以及处于默认状态的所有其他活动.
使用System.exit(0)是一种不好的做法.
在这种情况下调用exit()将终止进程,从而终止您的其他组件并可能损坏您的数据.操作系统当然可以少关注,但您的用户可能不会欣赏它.
如果他们已经用尽了他们的内部Dalvik堆限制,那么自愿杀死你的进程将无助于其他应用程序.无论设备有多少物理内存,操作系统都限制Dalvik允许在堆分配的任何进程中使用多少内存.因此,系统可能有一半的内存,特定的应用程序仍然可以访问OOM.
不要使用System.exit(0); 相反,你可以使用finish().
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
finish();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1495 次 |
| 最近记录: |