能否给我用实际代码展示一下如何使用单例模式管理应用的Activity呢?
时间: 2024-05-07 21:17:41 浏览: 19
当我们想要管理应用中的Activity时,使用单例模式是一种常见的做法。下面是一个简单的示例代码:
```
public class ActivityManager {
private static ActivityManager instance;
private Stack<Activity> activityStack;
private ActivityManager() {
activityStack = new Stack<>();
}
public static ActivityManager getInstance() {
if (instance == null) {
synchronized (ActivityManager.class) {
if (instance == null) {
instance = new ActivityManager();
}
}
}
return instance;
}
public void addActivity(Activity activity) {
activityStack.add(activity);
}
public void removeActivity(Activity activity) {
activityStack.remove(activity);
}
public void finishAllActivity() {
for (Activity activity : activityStack) {
if (!activity.isFinishing()) {
activity.finish();
}
}
activityStack.clear();
}
}
```
上述代码中,我们定义了一个ActivityManager类,使用单例模式实现了应用中Activity的管理。其中:
- instance:ActivityManager的唯一实例。
- activityStack:使用栈来管理Activity,新启动的Activity会被压入栈顶,关闭的Activity会被弹出栈顶。
- getInstance():获取ActivityManager的唯一实例,使用双重锁定保证线程安全。
- addActivity():将新启动的Activity添加到栈顶。
- removeActivity():将关闭的Activity从栈中移除。
- finishAllActivity():关闭栈中所有的Activity。
在应用中,我们可以在每个Activity的onCreate()方法中调用addActivity()方法,在onDestroy()方法中调用removeActivity()方法。当需要关闭所有Activity时,只需要调用finishAllActivity()方法即可。
这样,我们就使用单例模式实现了一个简单的Activity管理器。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)