Android完全退出应用程序 ,【Android面试题】

activity.finish();

activityStack.remove(activity);

activity = null;

}

}

//获得当前栈顶Activity

public Activity currentActivity() {

Activity activity = null;

if(!activityStack.empty())

activity= activityStack.lastElement();

return activity;

}

//将当前Activity推入栈中

public void pushActivity(Activity activity) {

if (activityStack == null) {

activityStack = new Stack();

}

activityStack.add(activity);

}

//退出栈中所有Activity

public void popAllActivityExceptOne(Class cls) {

while (true) {

Activity activity = currentActivity();

if (activity == null) {

break;

}

if (activity.getClass().equals(cls)) {

break;

}

popActivity(activity);

}

}

}

再看看自定义的Application类,有关网络连接处理的代码可以忽略不管。

public class ApplicationEx extends Application {

private static final String TAG = “ApplicationEx”;

private HttpClient httpClient; //采用apache网络连接组件

private ActivityManager activityManager = null;

public ApplicationEx() {

}

public ActivityManager getActivityManager() {

return activityManager;

}

public void setActivityManager(ActivityMana

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

ger activityManager) {

this.activityManager = activityManager;

}

@Override

public void onCreate() {

super.onCreate();

httpClient = createHttpClient();

//初始化自定义Activity管理器

activityManager = ActivityManager.getScreenManager();

}

@Override

public void onLowMemory() {

super.onLowMemory();

shutdownHttpClient();

}

@Override

public void onTerminate() {

super.onTerminate();

shutdownHttpClient();

}

private void shutdownHttpClient() {

if (httpClient != null && httpClient.getConnectionManager() != null) {

httpClient.getConnectionManager().shutdown();

}

}

private HttpClient createHttpClient() {

Log.d(TAG, “createHttpClient()…”);

HttpParams params = new BasicHttpParams();

HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);

HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

HttpProtocolParams.setUseExpectContinue(params, true);

SchemeRegistry schReg = new SchemeRegistry();

schReg.register(new Scheme(“http”, PlainSocketFactory.getSocketFactory(), 80));

schReg.register(new Scheme(“https”, SSLSocketFactory.getSocketFactory(), 443));

//解决多线程访问安全问题

ClientConnectionManager connectionManager = new ThreadSafeClientConnManager(params, schReg);

return new DefaultHttpClient(connectionManager, params);

}

public HttpClient getHttpClient() {

if (httpClient != null) {

return httpClient;

} else {

return createHttpClient();

}

}

}

再看看我们自定义的一个Acitivity基类。

public abstract class AbstractTemplateActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

ApplicationEx application = (ApplicationEx) this.getApplication();

application.getActivityManager().pushActivity(this);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值