对Android近期任务列表Recent Applications的简单分析Word下载.docx

上传人:b****2 文档编号:5941669 上传时间:2023-05-05 格式:DOCX 页数:18 大小:21.43KB
下载 相关 举报
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第1页
第1页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第2页
第2页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第3页
第3页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第4页
第4页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第5页
第5页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第6页
第6页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第7页
第7页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第8页
第8页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第9页
第9页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第10页
第10页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第11页
第11页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第12页
第12页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第13页
第13页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第14页
第14页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第15页
第15页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第16页
第16页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第17页
第17页 / 共18页
对Android近期任务列表Recent Applications的简单分析Word下载.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

对Android近期任务列表Recent Applications的简单分析Word下载.docx

《对Android近期任务列表Recent Applications的简单分析Word下载.docx》由会员分享,可在线阅读,更多相关《对Android近期任务列表Recent Applications的简单分析Word下载.docx(18页珍藏版)》请在冰点文库上搜索。

对Android近期任务列表Recent Applications的简单分析Word下载.docx

mIcons){

25icon.setCompoundDrawables(null,null,null,null);

26icon.setTag(null);

27}

28}

29};

30

31publicRecentApplicationsDialog(Contextcontext){

32super(context,com.android.internal.R.style.Theme_Dialog_RecentApplications);

33

34}

35

36/**

37*Wecreatetherecentapplicationsdialogjustonce,anditstaysaround(hidden)

38*untilactivatedbytheuser.

39*

40*@seePhoneWindowManager#showRecentAppsDialog

41*/

42@Override

43protectedvoidonCreate(BundlesavedInstanceState){

44super.onCreate(savedInstanceState);

45

46Contextcontext=getContext();

47

48if(sStatusBar==null){

49sStatusBar=(StatusBarManager)context.getSystemService(Context.STATUS_BAR_SERVICE);

50}

51

52Windowwindow=getWindow();

53window.requestFeature(Window.FEATURE_NO_TITLE);

54window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);

55window.setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,

56WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

57window.setTitle("

Recents"

);

58

59setContentView(com.android.internal.R.layout.recent_apps_dialog);

60

61finalWindowManager.LayoutParamsparams=window.getAttributes();

62params.width=WindowManager.LayoutParams.MATCH_PARENT;

63params.height=WindowManager.LayoutParams.MATCH_PARENT;

64window.setAttributes(params);

65window.setFlags(0,WindowManager.LayoutParams.FLAG_DIM_BEHIND);

66

67//默认显示8个

68mIcons[0]=(TextView)findViewById(com.android.internal.R.id.button0);

69mIcons[1]=(TextView)findViewById(com.android.internal.R.id.button1);

70mIcons[2]=(TextView)findViewById(com.android.internal.R.id.button2);

71mIcons[3]=(TextView)findViewById(com.android.internal.R.id.button3);

72mIcons[4]=(TextView)findViewById(com.android.internal.R.id.button4);

73mIcons[5]=(TextView)findViewById(com.android.internal.R.id.button5);

74mIcons[6]=(TextView)findViewById(com.android.internal.R.id.button6);

75mIcons[7]=(TextView)findViewById(com.android.internal.R.id.button7);

76mNoAppsText=findViewById(com.android.internal.R.id.no_applications_message);

77

78//关键在哪,你懂得...

79for(TextViewb:

80b.setOnClickListener(this);

81}

82}

83

84@Override

85publicbooleanonKeyDown(intkeyCode,KeyEventevent){

86if(keyCode==KeyEvent.KEYCODE_TAB){

87//IgnoreallmetakeysotherthanSHIFT.Theappswitchkeycouldbea

88//fallbackactionchordedwithALT,METAorevenCTRLdependingonthekeymap.

89//DPadnavigationishandledbytheViewRootelsewhere.

90finalbooleanbackward=event.isShiftPressed();

91finalintnumIcons=mIcons.length;

92intnumButtons=0;

93while(numButtons<

numIcons&

&

mIcons[numButtons].getVisibility()==View.VISIBLE){

94numButtons+=1;

95}

96if(numButtons!

=0){

97intnextFocus=backward?

numButtons-1:

0;

98for(inti=0;

i<

numButtons;

i++){

99if(mIcons[i].hasFocus()){

100if(backward){

101nextFocus=(i+numButtons-1)%numButtons;

102}else{

103nextFocus=(i+1)%numButtons;

104}

105break;

106}

107}

108finalintdirection=backward?

View.FOCUS_BACKWARD:

View.FOCUS_FORWARD;

109if(mIcons[nextFocus].requestFocus(direction)){

110mIcons[nextFocus].playSoundEffect(

111SoundEffectConstants.getContantForFocusDirection(direction));

112}

113}

114

115//ThedialogalwayshandlesthekeytopreventtheViewRootfrom

116//performingthedefaultnavigationitself.

117returntrue;

118}

119

120returnsuper.onKeyDown(keyCode,event);

121}

122

123/**

124*Dismissthedialogandswitchtotheselectedapplication.

125*/

126publicvoiddismissAndSwitch(){

127finalintnumIcons=mIcons.length;

128RecentTagtag=null;

129for(inti=0;

numIcons;

130if(mIcons[i].getVisibility()!

=View.VISIBLE){

131break;

132}

133if(i==0||mIcons[i].hasFocus()){

134tag=(RecentTag)mIcons[i].getTag();

135if(mIcons[i].hasFocus()){

136break;

137}

138}

139}

140if(tag!

=null){

141switchTo(tag);

142}

143dismiss();

144}

145

146/**

147*Handlerforuserclicks.Ifabuttonwasclicked,launchthecorrespondingactivity.

148*/

149publicvoidonClick(Viewv){

150for(TextViewb:

151if(b==v){

152RecentTagtag=(RecentTag)b.getTag();

153switchTo(tag);

154break;

155}

156}

157dismiss();

158}

159

160//

161privatevoidswitchTo(RecentTagtag){

162if(tag.info.id>

163//Thisisanactivetask;

itshouldjustgototheforeground.

164finalActivityManageram=(ActivityManager)

165getContext().getSystemService(Context.ACTIVITY_SERVICE);

166am.moveTaskToFront(tag.info.id,ActivityManager.MOVE_TASK_WITH_HOME);

167}elseif(tag.intent!

168tag.intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

169|Intent.FLAG_ACTIVITY_TASK_ON_HOME);

170try{

171getContext().startActivity(tag.intent);

172}catch(ActivityNotFoundExceptione){

173Log.w("

Recent"

"

Unabletolaunchrecenttask"

e);

174}

175}

176}

177

178/**

179*Setupandshowtherecentactivitiesdialog.

180*/

181@Override

182publicvoidonStart(){

183super.onStart();

184reloadButtons();

185if(sStatusBar!

186sStatusBar.disable(StatusBarManager.DISABLE_EXPAND);

187}

188

189//receivebroadcasts

190getContext().registerReceiver(mBroadcastReceiver,mBroadcastIntentFilter);

191

192mHandler.removeCallbacks(mCleanup);

193}

194

195/**

196*Dismisstherecentactivitiesdialog.

197*/

198@Override

199publicvoidonStop(){

200super.onStop();

201

202if(sStatusBar!

203sStatusBar.disable(StatusBarManager.DISABLE_NONE);

204}

205

206//stopreceivingbroadcasts

207getContext().unregisterReceiver(mBroadcastReceiver);

208

209mHandler.postDelayed(mCleanup,100);

210}

211

212/**

213*Reloadthe6buttonswithrecentactivities

214*/

215privatevoidreloadButtons(){

216

217finalContextcontext=getContext();

218finalPackageManagerpm=context.getPackageManager();

219finalActivityManageram=(ActivityManager)

220context.getSystemService(Context.ACTIVITY_SERVICE);

221finalList<

ActivityManager.RecentTaskInfo>

recentTasks=

222am.getRecentTasks(MAX_RECENT_TASKS,ActivityManager.RECENT_IGNORE_UNAVAILABLE);

223

224ActivityInfohomeInfo=

225newIntent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME)

226.resolveActivityInfo(pm,0);

227

228IconUtilitiesiconUtilities=newIconUtilities(getContext());

229

230//Performancenote:

OurandroidperformanceguidesaystopreferIteratorwhen

231//usingaListclass,butbecauseweknowthatgetRecentTasks()alwaysreturns

232//anArrayList<

>

we'

lluseasimpleindexinstead.

233intindex=0;

234intnumTasks=recentTasks.size();

235for(inti=0;

numTasks&

(index<

NUM_BUTTONS);

++i){

236finalActivityManager.RecentTaskInfoinfo=recentTasks.get(i);

237

238//fordebugpurposesonly,disallowfirstresulttocreateemptylists

239if(DBG_FORCE_EMPTY_LIST&

(i==0))continue;

240

241Intentintent=newIntent(info.baseIntent);

242if(info.origActivity!

243intent.setComponent(info.origActivity);

244}

245

246//Skipthecurrenthomeactivity.

247if(homeInfo!

248if(homeInfo.packageName.equals(

249intent.getComponent().getPackageName())

250&

homeInfo.name.equals(

251intent.getComponent().getClassName())){

252continue;

253}

254}

255

256intent.setFlags((intent.getFlags()&

~Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)

257|Intent.FLAG_ACTIVITY_NEW_TASK);

258finalResolveInforesolveInfo=pm.resolveActivity(intent,0);

259if(resolveInfo!

260finalActivityInfoactivityInfo=resolveInfo.activityInfo;

261finalStringtitle=activityInfo.loadLabel(pm).toString();

262Drawableicon=activityInfo.loadIcon(pm);

263

264if(title!

=null&

title.length()>

0&

icon!

265finalTextViewtv=mIcons[index];

266tv.setText(title);

267icon=iconUtilities.createIconDrawable(icon);

268tv.setCompoundDrawables(null,icon,null,null);

269RecentTagtag=newRecentTag();

270tag.info=info;

271tag.intent=intent;

272tv.setTag(tag);

273tv.setVisibility(View.VISIBLE);

274tv.setPressed(false);

275tv.clearFocus();

276++index;

277}

278}

279}

280

281//handlethecaseof"

noiconstoshow"

282mNoAppsText.setVisibility((index==0)?

View.VISIBLE:

View.GONE);

283

284//hidetherest

285for(;

index<

NUM_BUTTONS;

++index){

286mIcons[index].setVisibility(View.GONE);

287}

288}

289

290/**

291*ThisisthelistenerfortheACTION_CLOSE_SYSTEM_DIALOGSintent.I

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2