退出app的时候,要把所有的Activity否finish掉。
关闭App的方法 1. 获取当前进程的id,然后杀死进程
android.os.Process.killProcess(android.os.Process.myPid())通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的task任务栈清空 2. 终止当前正在运行的Java虚拟机,导致程序终止
System.exit(0);不会把自己的应用程序杀死 3. 强制关闭与该包有关联的一切执行
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); manager.restartPackage(getPackageName()); <uses-permission android:name="android.permission.RESTART_PACKAGES" />只能杀死别人,不能杀死自己 4. 企业中的做法:在Application的onCreate()中创建List,把activity放在List中,关闭app时,遍历集合,调用finish()方法。
public class MyApplication extends Application { private static List<Activity> activityList = new ArrayList<>(); @Override public void onCreate() { super.onCreate(); } public static void addActivity(Activity activity) { if (activity != null) { activityList.add(activity); } } public static void removeActivity(Activity activity) { if (activity != null) { activityList.remove(activity); activity.finish(); } } public static void exitApp() { for (Activity activity : activityList) { if (activity != null) { activity.finish(); } } System.exit(0); } public static void exitApp2() { for (Activity activity : activityList) { if (activity != null) { activity.finish(); } } android.os.Process.killProcess(android.os.Process.myPid()); } }android 安全退出应用程序的几种方法
如果使用onBackgress(),假如你的Activity有添加管理frgament回退的话,调用该方法是不会退出Activity的.直到Fragment回退栈清空,才会退出Activity. 如果使用finish(),那么就会直接退出Activity 参考:最常用的Activity的onBackPressed()与finish()的区别.
就是在MainActivity中发送Notification,点击开启NewActivity,当关闭NewActivity后,会回到MainActivity。 根据activity分2种实现方式: - 常规Activity - 特殊Activity
那么到底是什么意思呢?我们知道从Notification打开Activity_A,必须给Activity_A设置android:launchMode="singleTask"或intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);,但是这个Activity_A只可以在通知种打开,在其他Activity中无法启动它,我们把Activity_A成为特殊的Activity,这个Activity_A不是工作流的一部分,可以让它既可以从通知中打开Activity_A,也可以在其他Activity中打开,这是可以的,这种就是常规Activity。
首先在AndroidManifest.xml中定义NewActivity的层级结构,对于Android4.1只需要设置parentActivityName即可,值是父Activity中android:name=".MainActivity"中name的值,对于老版本,还需要添加meta-data。
<activity android:name=".NewActivity" android:parentActivityName=".MainActivity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity"/> </activity>android:excludeFromRecents="true"确保点击通知打开NewActivity2时不会销毁MainActivity
转发:http://blog.csdn.net/z_x_qiang/article/details/55210807
类似闹铃,微信视频通话,qq视频通话等都需要在锁屏状态下点亮屏幕,或者启动activity之类的。
最近在做视频通话是基于环信服务的,和微信视频通话是一样的,只不过是Activity横竖屏问题。结果就出问题了,竖屏在各个手机上没问题,可是横屏在华为7.0系统上就闪退了。 只能做到,电话来了,屏幕点亮,解开屏锁,然后接听。
其实在锁屏状态下点亮屏幕,显示activity很简单,在oncreate()方法中添加下面的代码就可以实现(横屏在部分手机上会闪退,竖屏能正常运行): getWindow().addFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 另一种电亮屏幕,解锁,然后才显示activity: getWindow().addFlags( WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON //这个是点亮屏幕 | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD //这个是透过锁屏界面,相当与解锁,但实质没有 | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); //这个是保持屏幕常亮。第二种在不同的手机上可能不能电亮屏幕,例如在华为mate9的7.0系统就不能电亮屏幕,可以通过另一种方式电亮屏幕:
manager = (PowerManager) getSystemService(Context.POWER_SERVICE); newWakeLock = manager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright"); newWakeLock.acquire();//点亮屏幕(常亮)在activity销毁的时候熄灭屏幕:
newWakeLock.release();//熄灭屏幕效果图:可以看到只有ActionBar和TextView(红色方块)是不透明的,其余看到的是手机主界面。
android:theme="@android:style/Theme.Translucent"或者 把这2行代码放到app style中就是所有页面都是透明的(此时Activity可以继承Activity)
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> </style>如果针对的是某一个Activity
<style name="TranslucentStyle"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> </style>然后在AndroidManifest.xml的theme中使用
<activity android:name=".MainActivity" android:theme="@style/TranslucentStyle"/>注意Activity不可以继承AppCompatActivity,只能是Activity
1 Fragment是Android3.0之后才加入的。 2 Fragment是依赖于Activity而存在,可以把Fragment看做是Activity的子控件。3.0前,一个屏幕就只有一个Activity,3.0后一个屏幕可以有多个Fragment。 3 Fragment的生命周期比Activity多了几个:onAttach()+onDetach,onCreateView+onDestroyView() 4 Activity如果使用Fragment,必须继承自FragmentActivity