/**
* Activity 生命周期
* 主要有7个方法
* onCreate() 创建,初始化控件,绑定监听器
* onStart() 启动,显示控件到界面上,启动线程/服务
* onResume() 恢复,可以与用户交互,点击,计时器重新开启
* onPause() 暂停,不能与用户交互,保留一些状态,计时器暂停
* onStop() 停止,界面完全看不到的时候
* onRestart() 重启,重新显示控件到界面上
* onDestroy() 销毁,finish(),暂停线程,回收资源
*
* 第一个场景
* 启动Activity
* onCreate-->onStart-->onResume
* 点击Home键
* onPause-->onStop
* 点击最近任务键
* onRestart-->onStart-->onResume
*
* 第二个场景:与其他Activity切换的时候
* 启动第一个Activity
* onCreate-->onStart-->onResume
* 当跳转第二个界面
* 第一个页面 onPause
* 第二个界面 onCreate-->onStart-->onResume
* 第一个界面 onStop
* 第二个页面关闭的时候
* 第二个界面 onPause
* 第一个界面 onRestart-->onStart-->onResume
* 第二个界面 onStop-->onDestroy
* 点击设备的返回键,相当于调用finish()
* 第一个界面点击返回键 onPause-->onStop-->onDestroy
*
*
* 横竖屏切换场景:
* 不影响
* android:screenOrientation="portrait"竖屏 landscape横屏
* 从竖屏-->横屏
* onPause-->onStop-->onDestroy
* onCreate-->onStart-->onResume
* 从横屏-->竖屏
* onPause-->onStop-->onDestroy
* onCreate-->onStart-->onResume
* 如果不每次切换都调用onCreate方法
* 1、重写onConfigurationChanged方法
* 2、在Manifest.xml中设置android:configChanges="keyboardHidden|orientation|screenSize"
*
* if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE)判断是否是横屏
if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT)判断是否是竖屏
ORIENTATION_LANDSCAPE==2横屏
ORIENTATION_PORTRAIT==1竖屏
ORIENTATION_UNDEFINED==0未定义
*
* 也可创建layout-land 文件(横屏,默认layout文件为竖屏),xml名相同,id也相同
* 系统会自动区分,进行运行
*/
在Intent中会涉及到权限的问题
在Manifist中添加
<uses-permission android:name="android.permission.CALL_PHONE"/>
在mainActivity中例如拨打电话
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);//直接拨打电话,系统要求权限
intent.setData(Uri.parse("tel:137864826"));
startActivity(intent);
if (ActivityCompat.checkSelfPermission(this,permissions[0])
== PackageManager.PERMISSION_GRANTED)//判断是否有权限
这是自己定义的方法:也可以不用
public void checkAndRequestPermission(){//权限申请
String[] permissions=new String[]{"android.permission.CALL_PHONE"};
if (ActivityCompat.checkSelfPermission(this,permissions[0])
== PackageManager.PERMISSION_GRANTED){
//有权限
call();
} else{
//没有权限,进行权限申请
ActivityCompat.requestPermissions(this,permissions,REQUEST_PERMISSION_CALL_PHONE);
}
}
在 avtivity中重写onRequestPermissionsResult()方法,此方法为,权限结果返回后的处理方法
//请求权限获取结果时调用
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Log.d("onRequestPermissionsResult",""+grantResults[0]);
if (requestCode==REQUEST_PERMISSION_CALL_PHONE){
if ("android.permission.CALL_PHONE".equals(permissions[0])
&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
// Log.d("onRequestPermissionsResult",""+permissions[0]);
}else {
Toast.makeText(this, "您尚未开启权限,部分功能可能会受影响", Toast.LENGTH_LONG).show();
}
}
}