您的位置:首页 > 移动开发 > Android开发

Android 应用程序Activity管理类:用于Activity管理和应用程序退出

2017-03-29 16:06 411 查看
一个AndroidappManager类,用于管理Activity和应用程序退出,具体功能包括添加Activity到堆栈、获取当前Activity、结束当前Activity、结束指定的Activity、结束指定类名的Activity、退出应用程序、检测当前包名的应用是否安装,检测当前包名的当前版本的应用是否安装、解析包名下的MainActivity启动路径。

view
source

print?

001
import
java.util.List;
002
import
java.util.Stack;
003
import
android.app.Activity;
004
import
android.app.ActivityManager;
005
import
android.content.Context;
006
import
android.content.Intent;
007
import
android.content.pm.PackageInfo;
008
import
android.content.pm.ResolveInfo;
009
import
android.content.pm.PackageManager.NameNotFoundException;
010
/**
011
*
应用程序Activity管理类:用于Activity管理和应用程序退出
012
*/
013
public
class
AppManager
{
014
private
static
Stack<Activity>
activityStack;
015
private
static
AppManager
instance;
016
private
AppManager()
{
017
}
018
/**
019
*
单一实例
020
*/
021
public
static
AppManager
getAppManager(){
022
if
(instance
==
null
)
{
023
instance
=
new
AppManager();
024
}
025
return
instance;
026
}
027
/**
028
*
添加Activity到堆栈
029
*/
030
public
void
addActivity(Activity
activity){
031
if
(activityStack
==
null
)
{
032
activityStack
=
new
Stack<Activity>();
033
}
034
activityStack.add(activity);
035
}
036
/**
037
*
获取当前Activity(堆栈中最后一个压入的)
038
*/
039
public
Activity
currentActivity(){
040
Activity
activity=activityStack.lastElement();
041
return
activity;
042
}
043
/**
044
*
结束当前Activity(堆栈中最后一个压入的)
045
*/
046
public
void
finishActivity()
{
047
Activity
activity=activityStack.lastElement();
048
finishActivity(activity);
049
}
050
/**
051
*
结束指定的Activity
052
*/
053
public
void
finishActivity(Activity
activity){
054
if
(activity
!=
null
)
{
055
activityStack.remove(activity);
056
activity.finish();
057
activity
=
null
;
058
}
059
}
060
/**
061
*
结束指定类名的Activity
062
*/
063
public
void
finishActivity(Class<?>
cls){
064
for
(Activity
activity:activityStack){
065
if
(activity.getClass().equals(cls))
{
066
finishActivity(activity);
067
}
068
}
069
}
070
/**
071
*
结束所有Activity
072
*/
073
public
void
finishAllActivity()
{
074
for
(
int
i
=
0
,
size=activityStack.size();i<size;i++){
075
if
(
null
!=
activityStack.get(i)){
076
activityStack.get(i).finish();
077
}
078
}
079
activityStack.clear();
080
}
081
/**
082
*
退出应用程序
083
*/
084
public
void
AppExit(Context
context){
085
try
{
086
finishAllActivity();
087
ActivityManager
activityMgr=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
088
activityMgr.restartPackage(context.getPackageName());
089
System.exit(
0
);
090
}
catch
(Exception
e){
091
}
092
}
093
/**
094
*
检测安装
095
*/
096
public
static
boolean
checkApp(Context
c,StringpackageName,
int
versionCode)
{
097
//
检测当前包名的应用是否安装,检测当前包名的当前版本的应用是否安装
098
PackageInfo
packageInfo=
null
;
099
try
{
100
packageInfo
=c.getPackageManager().getPackageInfo(packageName,
0
);
101
if
(packageInfo.versionCode
==versionCode){
102
return
true
;
103
}
104
}
catch
(NameNotFoundException
e){
105
return
false
;
106
}
107
return
false
;
108
}
109
/**
110
*
解析包名下的MainActivity启动路径
111
*/
112
public
static
String
getMainClass(Contextc,StringpackageName){
113
if
(!packageName.equals(
""
)){
114
String
mainClassName=
""
;
115
Intent
resolveIntent=
new
Intent(Intent.ACTION_MAIN,
null
);
116
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
117
resolveIntent.setPackage(packageName);
118
List<ResolveInfo>
activitys=c.getPackageManager().queryIntentActivities(resolveIntent,
0
);
119
ResolveInfo
ri=activitys.iterator().next();
120
if
(ri
!=
null
)
{
121
mainClassName
=ri.activityInfo.name;
122
}
123
return
mainClassName;
124
}
125
return
""
;
126
}
127
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: