android 测试魅族note5 竖屏activity调用ios强制横屏返回竖屏activity,关闭ios强制横屏返回竖屏后竖屏activity显示异常

四大组件之Activity 第4节 系统设置改变onConfigurationChanged |他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)禁止横屏和竖屏切换
在某些场合可能需要禁止横屏和竖屏切换,实现这个要求很简单,只要在Manifest.xml里面加入这一行android :screenOrientation=&landscape &(landscape 是横向,portrait 是纵向)。不过android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置。在activity加上android:configChanges=&keyboardHidden|orientation&属性,就不会重启activity.而是去调用onConfigurationChanged(Configuration newConfig). 这样就可以在这个方法里调整显示方式.
@Override&
&&& public void onConfigurationChanged(Configuration newConfig) {&&
&&&&&&& try {&&
&&&&&&&&&&& super.onConfigurationChanged(newConfig);&&
&&&&&&&&&&& if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {&&
&&&&&&&&&&&&&&& // land&&
&&&&&&&&&&& } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {&&
&&&&&&&&&&&&&& // port&&
&&&&&&&&&&& }&&
&&&&&&& } catch (Exception ex) {&&
上面是我找的资料,上面的操作做完了可以实现屏幕的横竖屏切换 不重新启动Activity 并且可以在方法中对横竖屏进行操作
我一般采取的方式是在AndroidManifest.xml中的显示的Activity中调整,红色字部分添加后实现手机屏幕的固定显示,设置为横屏就一直是横屏,设置为竖屏就一直是竖屏不会随着你手机的颠倒而改变,个人觉的挺好用的。
&application android:icon=&@drawable/icon& android:label=&@string/app_name&&
& &activity android:name=&QRCodeActivity& android:label=&@string/app_name&
& android:screenOrientation=&landscape& &
&& &intent-filter&
&&& &action android:name=&android.intent.action.MAIN& /&
&&& &category android:name=&android.intent.category.LAUNCHER& /&
&& &/intent-filter&
& &/activity&
&&/application&11.横竖屏切换时候 Activity 的生命周期?
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges=\时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges=\时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
12.Activity 的生命周期
:当第一次调用一个Activity就会执行onCreate方法
onDestroy :当Activity被销毁时会调用onDestory方法
:当Activity处于可见状态的时候就会调用onStart方法
:当Activity处于不可见状态的时候就会调用onStop方法
:当Activity可以得到用户焦点的时候就会调用onResume方法
:当Activity被遮挡住的时候就会调用onPause方法
onRestart :当Activity没有被销毁的时候重新调用这个Activity就会调用onRestart方法
一个 Activity 正常启动过程中执行 onCreate onStart onResume
当这个 Activity 被干被干掉时执行 onPause onStop onDestroy
13.Fragment 的生命周期
onCreateView
onActivityCreated:
fragment 正在使用
a: user navigates backward or fragment is removed/replaced
用户导航落后或片段删除/替换
b: the fragment is added to the back stack,then removed/replaced
该片段被添加到堆栈中,然后删除/替换
onDestroyView
b: the fragment returns to the layout from the back stack
片段返回到堆栈的布局.
onCreateView
1. 当一个fragment被创建的时候,它会经历以下状态.
onAttach()
onCreate()
onCreateView()
onActivityCreated()
2. 当这个fragment对用户可见的时候,它会经历以下状态。
onResume()
3. 当这个fragment进入“后台模式”的时候,它会经历以下状态。
4. 当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。
onDestroyView()
onDestroy()
onDetach()
5. 就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。
onCreate()
onCreateView()
onActivityCreated()
6. fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。
onAttached() ―― 当fragment被加入到activity时调用(在这个方法中可以获得所在的activity)。
onCreateView() ―― 当activity要得到fragment的layout时,调用此方法,fragment在其中创建自己的layout(界面)。
onActivityCreated() ―― 当activity的onCreated()方法返回后调用此方法
onDestroyView() ―― 当fragment中的视图被移除的时候,调用这个方法。
onDetach() ―― 当fragment和activity分离的时候,调用这个方法。
一旦activity进入resumed状态(也就是running状态),你就可以自由地添加和删除fragment了。因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。
14.在一个应用程序中,已知按顺序启动 6 个 activity,编号控顺序分别为 1,2,3,4,5,6. 如何从第 6 个 activity 跳转到第 2 个 activity ,并清除中间的activity
21.说出 Service 的生命周期,并说出 Service 和 CGI 的区别
startService启动
bindSerice启动
onCreate()
onCreate()
onStartCommand()
service running运行服务
clients are bound to service客户绑定服务
a: the service is stopped
by itseif or a client 服务本身或客户停止
b: all clients unbind by calling unbindService 所有客户端通过调用unbindService解除绑定
onDestroy()
onUnbind()
onDestroy()
service shut down 服务关闭
22.介绍一下 service, service 作为一个后台程序,能否执行耗时操作
23.如何启用 Service, 如何停用 Service
可以通过在activity中 设置事件 。当事件触发时 利用intent
Intent intent=new Intent(MainActivity.this, ServiceDemo.class);
switch (v.getId()){
case R.id.startBtn:
startService(intent); 启动
case R.id.stopBtn:
stopService(intent); 停用
24.如何保证 service 不被后台系统杀死, service 被系统杀死后如何重启
Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStartCommand方法中做一些处理。然后我们注意到这个函数有一个int的返回值
从Android官方文档中,我们知道onStartCommand有4种返回值:
START_STICKY: 如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。
START_NOT_STICKY: “非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。
START_REDELIVER_INTENT: 重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。
START_STICKY_COMPATIBILITY: START_STICKY的兼容版本,但不保证服务被kill后一定能重启。
现在的安卓手机,只要一长按home键,通常都会列出近期任务,这里可以干掉所有进程所以一直不断的在后台运行是不行的,但是你可以通常广播来激活你的service
25.简要解释一下 activity, intent, intent filter, service, Broadcase, BroadcaseReceiver
Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期,Activity的使用需要在Manifest文件中添加相应的,并设置其属性和intent-filter。
Intent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
service是没有界面的长生命周期的代码。一个很好的例子是媒体播放器从列表中播放歌曲。
Broadcast是一种广泛运用的在应用程序之间传输信息的机制。
BroadcastReceiver是对发送出来的 Broadcast 进行过滤接受并响应的一类组件。
IntentFilter就是用于描述intent的各种属性, 比如action, category等
26.对 Intent, Activity, 广播, Service 等的理解
31.Android 的四大组件介绍
: 所有程序的根本,所有程序的流程都运行在Activity之中
: 是没有界面的长生命周期的代码。
broadcast receiver : 对发送出来的 Broadcast 进行过滤接受并响应的一类组件。
content provider
: 如果需要在进程间传递数据,则可以使用AIDL/Binder或创建一个ContentProvider,但是不能跨越进程/包边界直接来使用数据库
32.View的刷新
在需要刷新的地方使用 handler.sendMessage 发送信息,然后在 handler 的 getMessage 里执行 invaliate 或者 postInvaliate.
33.GC 内存泄露
出现情况:
2.1 数据库的 cursor 没有关闭
2.2 构造 adapter 时,没有使用缓存 contentView 衍生 listView 的优化问题 --减少创建 view 的对象,充分使用 contentView, 可以使用一静态类来优化处理 getView的过程.
2.3 Bitmap 对象不使用时采用 recycle() 释放内存.
2.4 ......
34.在 android 中,请简述 jni 的调用过程
1. 安装和下载cygwin,下载Android NDK;
2. 在ndk项目中JNI接口的设计;
3. 使用C/C++实现本地方法;
4. JNI生成动态链接库.so文件;
5. 将动态链接库复制到java工程,在Java工程中调用,运行Java工程即可
35.如果后台的 Activity 由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
Activity中提供了一个方法:onSavedInstanceState(Bundle obj).当系统销毁一个Activity时,会将Activity的状态信息已键值对形式存放在bundle对象中.
onCreate方法的定义是\
Activity还有个onRestoreInstanceState(Bundle outState)方法.这个方法的描述中也写到在Activity回复先前保存的状态时会被调用.
36.请介绍下 Android 的数据存储方式.
使用SharedPreferences存储数据;
它是Android提供的用来存储一些简单配置信息的一种机制
文件存储数据;
文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与 Java中实现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件
SQLite数据库存储数据;
使用ContentProvider存储数据;
当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据
网络存储数据;
需要与Android 网络数据包打交道,关于Android 网络数据包的详细说明,请阅读Android SDK引用了Java SDK的哪些package
37.如何退出 Activity? 如何安全退出已调用多个 Activity 的 Application?
对于单一Activity的应用来说,退出很简单,直接finish()即可。当然,也可以用}

我要回帖

更多关于 横屏视频怎么变成竖屏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信