?
Android 实现Activity后台运行
- 博客分类:?
- android
Android
第一种方法
?
- Intent?intent?=?new?Intent(Intent.ACTION_MAIN);??
- intent.addCategory(Intent.CATEGORY_HOME);??
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);??
- startActivity(intent);??
?
?
第二种方法
?
此方法其实不是主要是屏蔽Keycode_Back,让它不结束(finish())Activity,直接显示HOME界面。
?
- PackageManager?pm?=?getPackageManager();??
- ??????????????????????????????ResolveInfo?homeInfo?=?pm.resolveActivity(new?Intent(Intent.ACTION_MAIN)??
- .addCategory(Intent.CATEGORY_HOME),?0);??
?
?
- public?boolean?onKeyDown(int?keyCode,?KeyEvent?event)?{??
- ????if?(keyCode?==?KeyEvent.KEYCODE_BACK)?{??
- ????????ActivityInfo?ai?=?homeInfo.activityInfo;??
- ????????Intent?startIntent?=?new?Intent(Intent.ACTION_MAIN);??
- ????????startIntent.addCategory(Intent.CATEGORY_LAUNCHER);??
- ????????startIntent.setComponent(new?ComponentName(ai.packageName,??
- ????????????????ai.name));??
- ????????startActivitySafely(startIntent);??
- ????????return?true;??
- ????}?else??
- ????????return?super.onKeyDown(keyCode,?event);??
- }??
?
?
- void?startActivitySafely(Intent?intent)?{??
- ????intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);??
- ????try?{??
- ????????startActivity(intent);??
- ????}?catch?(ActivityNotFoundException?e)?{??
- ????????Toast.makeText(this,?R.string.unabletoopensoftware,??
- ????????????????Toast.LENGTH_SHORT).show();??
- ????}?catch?(SecurityException?e)?{??
- ????????Toast.makeText(this,?R.string.unabletoopensoftware,??
- ????????????????Toast.LENGTH_SHORT).show();??
- ????????Log??
- ????????????????.e(??
- ????????????????????????TAG,??
- ????????????????????????"Launcher?does?not?have?the?permission?to?launch?"??
- ????????????????????????????????+?intent??
- ????????????????????????????????+?".?Make?sure?to?create?a?MAIN?intent-filter?for?the?corresponding?activity?"??
- ????????????????????????????????+?"or?use?the?exported?attribute?for?this?activity.",??
- ????????????????????????e);??
- ????}??
- }??
?