精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-19
有点明白你的意思了,不过如果我做oa的话虽然关掉了,但是如果还cache在那里再打开的话对于用户来说就不太好了,没有登录过的话不应该再看到登录过以后的东西。
不知道你们设计的时候一般怎么设计退出,如果应用包含登录的话,这种方式合理吗?再打开没登录还显示上次用户登录过以后的界面......我做的是oa信息不是公开的那种 |
|
返回顶楼 | |
发表时间:2011-07-19
Activity 的 onCreate里处理呀,每次都会调用,打开一个对话框,登陆啊。
我也使用过android.os.Process.killProcess(android.os.Process.myPid());这种方式,如果系统有后台线程,就必须设法关掉,仅仅是关掉Activity是没用的,为了省事直接用这个,后台线程肯定会杀掉。 |
|
返回顶楼 | |
发表时间:2011-07-19
pgmsoul 写道 Activity 的 onCreate里处理呀,每次都会调用,打开一个对话框,登陆啊。
我也使用过android.os.Process.killProcess(android.os.Process.myPid());这种方式,如果系统有后台线程,就必须设法关掉,仅仅是关掉Activity是没用的,为了省事直接用这个,后台线程肯定会杀掉。 多个activity用这种方式在2.2版本上不可用的,关不掉所有的....你试试就知道了 |
|
返回顶楼 | |
发表时间:2011-07-26
Cindy_Lee 写道 我比较关注的是 这个方法在其它版本上能通用吗?
|
|
返回顶楼 | |
发表时间:2011-10-09
lenciel 写道 嗯,又是Android完全退出程序。在GoogleGroup常常看到这种问题。有点儿不明白,楼主在什么情况下需要“完全退出程序”呢?
按照Android的设计理念,一个Application可以类比成一个网站,一个Activity就像一个网页。系统在需要资源的时候才会摧毁一个Application。对于用户而言,他们点Back键的时候不会有“彻底退出这个程序”的概念,就像你在浏览器上看完这个论坛关浏览器也不会想“彻底摧毁这个网页”一样。 你如果放眼看现在的一些WebOS,以及Apple的iOS等其他的系统,都有类似的设计观念:用户不需要在乎程序是不是退出了,一段时间一个程序处于“不活跃”的状态它就会被系统退出。 任何时候你都可以通过一些奇特的步骤退出一个Android程序。但是我个人觉得这种办法有两个坏处:一是你的“退出程序”的代码在Android疯狂升级的过程中是否一直有效?毕竟你的行为是与它的模型相悖的。二是如果你的程序还有做iphone版本,web版本的想法,你现在的model是否可用? 总之,我一直觉得一个设计正确的android程序是不需要一段“彻底退出程序”的代码的。 对“完全退出程序”有了新的认识,学习中。 |
|
返回顶楼 | |
发表时间:2011-11-04
iaiai 写道 这个问题一直困扰着我,试了n种方式,都不行,在网上搜了一圈,没有能用的:
1.ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); manager.killBackgroundProcesses(package); 不行 2.android.os.Process.killProcess(android.os.Process.myPid()); 也不行 3.manager.restartPackage(package); 还是不行 4. Intent MyIntent = new Intent(Intent.ACTION_MAIN); MyIntent.addCategory(Intent.CATEGORY_HOME); startActivity(MyIntent); finish(); 这个只是退回到桌面,如果打开多个Activity关闭重新打开也会有问题,还是还是不行 看到有说广播机制,发现是个好东东,能彻底解决这个问题,废话不说看代码: public abstract class EnterActivity extends BaseActivity { ... // 写一个广播的内部类,当收到动作时,结束activity private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { close(); unregisterReceiver(this); // 这句话必须要写要不会报错,不写虽然能关闭,会报一堆错 } }; @Override public void onResume() { super.onResume(); // 在当前的activity中注册广播 IntentFilter filter = new IntentFilter(); filter.addAction(Attribute.PAGENAME); registerReceiver(this.broadcastReceiver, filter); // 注册 } /** * 关闭 */ public void close() { Intent intent = new Intent(); intent.setAction(Attribute.PAGENAME); // 说明动作 sendBroadcast(intent);// 该函数用于发送广播 finish(); } ... } 别人写的缺了个地方(unregisterReceiver)这个必须要加,找了个最简单的方法 如果要调用怎么调用呢? 直接调用 this.close(); 如果打开很多个Activity, 直接在单独一个Activity调用this.close() 我发现会有循环的调用. 不信你试试 ,会有多个一个Activity会有多次onReceive被执行 |
|
返回顶楼 | |
发表时间:2012-01-14
感觉BroadcastReceiver 做了太多的事了
|
|
返回顶楼 | |
发表时间:2012-01-16
什么叫 再打开没登录还显示上次用户登录过以后的界面. 我很好奇你的登录是怎么做的.
iaiai 写道 有点明白你的意思了,不过如果我做oa的话虽然关掉了,但是如果还cache在那里再打开的话对于用户来说就不太好了,没有登录过的话不应该再看到登录过以后的东西。
不知道你们设计的时候一般怎么设计退出,如果应用包含登录的话,这种方式合理吗?再打开没登录还显示上次用户登录过以后的界面......我做的是oa信息不是公开的那种 |
|
返回顶楼 | |
发表时间:2012-01-16
clarkamx 写道 什么叫 再打开没登录还显示上次用户登录过以后的界面. 我很好奇你的登录是怎么做的.
iaiai 写道 有点明白你的意思了,不过如果我做oa的话虽然关掉了,但是如果还cache在那里再打开的话对于用户来说就不太好了,没有登录过的话不应该再看到登录过以后的东西。
不知道你们设计的时候一般怎么设计退出,如果应用包含登录的话,这种方式合理吗?再打开没登录还显示上次用户登录过以后的界面......我做的是oa信息不是公开的那种 什么叫登录怎么做的,你看不懂什么意思吗? 我在网上看到现在分两派,一派像windows操作系统一样,关闭就算真正关闭,还有一派就像iphone设计的一样,退出的时候实现是最小化当前的应用到内存里了,下次打开的时候还会直接打开上次关闭时的位置..... 我是不想要后者.....你看不明白吗? |
|
返回顶楼 | |
发表时间:2012-01-17
你将栈中的所有Activity都finish掉的话, 下次打开程序怎么可能是上次的界面.
iaiai 写道 clarkamx 写道 什么叫 再打开没登录还显示上次用户登录过以后的界面. 我很好奇你的登录是怎么做的.
iaiai 写道 有点明白你的意思了,不过如果我做oa的话虽然关掉了,但是如果还cache在那里再打开的话对于用户来说就不太好了,没有登录过的话不应该再看到登录过以后的东西。
不知道你们设计的时候一般怎么设计退出,如果应用包含登录的话,这种方式合理吗?再打开没登录还显示上次用户登录过以后的界面......我做的是oa信息不是公开的那种 什么叫登录怎么做的,你看不懂什么意思吗? 我在网上看到现在分两派,一派像windows操作系统一样,关闭就算真正关闭,还有一派就像iphone设计的一样,退出的时候实现是最小化当前的应用到内存里了,下次打开的时候还会直接打开上次关闭时的位置..... 我是不想要后者.....你看不明白吗? |
|
返回顶楼 | |