return instance;
}
//退出栈顶Activity
public void popActivity(Activity activity) {
if (activity != null) {
//在从自定义集合中取出当前Activity时,也进行了Activity的关闭操作
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(ActivityManager 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));
总结
我最近从朋友那里收集到了2020-2021BAT 面试真题解析,内容很多也很系统,包含了很多内容:Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题
等等,可以很好地帮助大家深刻理解Android相关知识点的原理以及面试相关知识。
这份资料把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节;还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
这里也分享给广大面试同胞们,希望每位程序猿们都能面试成功~
领取方式:点击直达GitHub
Android 基础知识点
Java 基础知识点
Android 源码相关分析
常见的一些原理性问题
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析
1644908699384)]
Android 源码相关分析
[外链图片转存中…(img-NZaogS61-1644908699384)]
常见的一些原理性问题
[外链图片转存中…(img-Seeou1L0-1644908699385)]
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析
[外链图片转存中…(img-eb9ZcjYP-1644908699385)]