论坛首页 移动开发技术论坛

Android 2.2完全退出程序, 使用广播机制

浏览 23386 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-01-17  
clarkamx 写道
你将栈中的所有Activity都finish掉的话, 下次打开程序怎么可能是上次的界面.

iaiai 写道
clarkamx 写道
什么叫  再打开没登录还显示上次用户登录过以后的界面. 我很好奇你的登录是怎么做的.

iaiai 写道
有点明白你的意思了,不过如果我做oa的话虽然关掉了,但是如果还cache在那里再打开的话对于用户来说就不太好了,没有登录过的话不应该再看到登录过以后的东西。

不知道你们设计的时候一般怎么设计退出,如果应用包含登录的话,这种方式合理吗?再打开没登录还显示上次用户登录过以后的界面......我做的是oa信息不是公开的那种



什么叫登录怎么做的,你看不懂什么意思吗?
我在网上看到现在分两派,一派像windows操作系统一样,关闭就算真正关闭,还有一派就像iphone设计的一样,退出的时候实现是最小化当前的应用到内存里了,下次打开的时候还会直接打开上次关闭时的位置.....
我是不想要后者.....你看不明白吗?



你在点手机上的返回键或是home键,如果不做任何处理的话不是finish的,并且如果打开有多个Activity的时候你关闭的时候你怎么把所有的activity关闭?这个你做过吗?你finish的话只能关闭当前打开的activity但是前面还有好多个activity没有关闭,下次打开的时候还是会显示那些没关闭的activity,说白了一句话就是:打开多个Activity怎么退出所有的Activity。如果你做过android程序应该知道的....
0 请登录后投票
   发表时间:2012-01-17   最后修改:2012-01-17

哎, 原来是这样..我这么做的

import java.util.ArrayList;

import android.app.Activity;

/**
 * Activity管理类
 *
 */
public final class ActivityManager {
	private static ActivityManager manager;
	private ArrayList<Activity> activities;
	
	private ActivityManager () {
	}
	
	public static ActivityManager getInstance() {
		if(manager == null) {
			manager = new ActivityManager();
		}
		return manager;
	}
	
	public void add(Activity activity) {
		if(activities == null) {
			activities = new ArrayList<Activity>();
		}
		activities.add(activity);
	}
	
	public void remove(Activity activity) {
		if(activities != null) {
			activities.remove(activity);
		}
	}
	
	public void exit() {
		if(activities != null) {
			for(int i = activities.size() - 1; i >= 0; i--) {
				activities.get(i).finish();
			}
		}
	}
}
0 请登录后投票
   发表时间:2012-01-17  
clarkamx 写道

哎, 原来是这样..我这么做的

import java.util.ArrayList;

import android.app.Activity;

/**
 * Activity管理类
 *
 */
public final class ActivityManager {
	private static ActivityManager manager;
	private ArrayList<Activity> activities;
	
	private ActivityManager () {
	}
	
	public static ActivityManager getInstance() {
		if(manager == null) {
			manager = new ActivityManager();
		}
		return manager;
	}
	
	public void add(Activity activity) {
		if(activities == null) {
			activities = new ArrayList<Activity>();
		}
		activities.add(activity);
	}
	
	public void remove(Activity activity) {
		if(activities != null) {
			activities.remove(activity);
		}
	}
	
	public void exit() {
		if(activities != null) {
			for(int i = activities.size() - 1; i >= 0; i--) {
				activities.get(i).finish();
			}
		}
	}
}

我也做过像这种利用容器去管理activity,退出再统一finish的,话说不知这样做有何不妥
0 请登录后投票
   发表时间:2012-01-18   最后修改:2012-01-18
想要每个activity都finish,这样写基类不就行了?
public void onExitActivity(){
		finish();
}
0 请登录后投票
   发表时间:2012-01-29  
都试了下在2.3.3中还是不能完全退出
0 请登录后投票
   发表时间:2012-01-30  
楼主你确定你的程序没问题?close中发广播,在接受到广播后又close,虽然后面有unregister,但是你不觉得这样很奇怪吗?

用这个:
Process.killProcess(Process.myPid());
秒杀一切!
0 请登录后投票
   发表时间:2012-01-30  
fantao005x 写道
楼主你确定你的程序没问题?close中发广播,在接受到广播后又close,虽然后面有unregister,但是你不觉得这样很奇怪吗?

用这个:
Process.killProcess(Process.myPid());
秒杀一切!


你如果懂广播的话你就会看懂我的代码,我的代码运行是会报一个小错,就因为是个小错所以我没有改,看懂了自然就会改了......
0 请登录后投票
   发表时间:2012-01-30  
fantao005x 写道
楼主你确定你的程序没问题?close中发广播,在接受到广播后又close,虽然后面有unregister,但是你不觉得这样很奇怪吗?

用这个:
Process.killProcess(Process.myPid());
秒杀一切!


对了android.os.Process.killProcess(android.os.Process.myPid());你说的这种方式我早试过,如果你没拿2.2/2.3系统试的话就别在这说这种话,你看我的发的贴子试过之后再说...
0 请登录后投票
   发表时间:2012-01-31  
iaiai 写道
fantao005x 写道
楼主你确定你的程序没问题?close中发广播,在接受到广播后又close,虽然后面有unregister,但是你不觉得这样很奇怪吗?

用这个:
Process.killProcess(Process.myPid());
秒杀一切!


对了android.os.Process.killProcess(android.os.Process.myPid());你说的这种方式我早试过,如果你没拿2.2/2.3系统试的话就别在这说这种话,你看我的发的贴子试过之后再说...


楼主说话火气好大,大家讨论个问题,有必要这样嘛。哎……
不知道楼主从哪里看出来我没有试验过的?
我的程序在2.2上用这个:Process.killProcess(Process.myPid());是没问题的(2.3没试),我们项目组开发的项目用这个在2.2,2.3都没问题。

如果你试验的不行的话,那可能还有其他原因。说实话我还是菜鸟,如果有冒犯,请见谅。
0 请登录后投票
   发表时间:2012-01-31  
zhengjie_dna 写道
都试了下在2.3.3中还是不能完全退出


你试试Process.killProcess(Process.myPid());行不?
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics