1. onActivityResult是比onResume先调用的,而且如果onActivityResult中的code比较耗时的话,会阻塞onResume,可以通过如下的code进行测试:
public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.w(TAG, "on activity result start to deal with: " + requestCode); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Log.w(TAG, "on activity result end"); } public void onResume() { super.onResume(); Log.w(TAG, "on resume start"); }
打印的次序应该是
MainActivity: on activity result start to deal with: 13
MainActivity: on activity result end
MainActivity: on resume start
refer onActivityResult() & onResume()
2. 在activity和fragment并存的时候startActivityForResult
如果在host activity中重写了onActivityResult,那么应该调用super.onActivityResult,这样才能保证fragment中的onActivityResult会被调用
通过如下片段测试:
host activity中有一个fragment,fragment通过两种方式startActivityForResult
1)
Intent intent = new Intent(getContext(), SecondActivity.class); startActivityForResult(intent, 12);
2)
Intent intent = new Intent(getContext(), SecondActivity.class); getActivity().startActivityForResult(intent, 13);
注意两者之间的区别,第二个显示调用了getActivity
并且在fragment中设置onActivityResult
public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.w(TAG, "on activity result start to deal with: " + requestCode); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Log.w(TAG, "on activity result end"); } public void onResume() { super.onResume(); Log.w(TAG, "on resume start"); }
在host activity中
public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.w(TAG, "on activity result start to deal with: " + requestCode); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Log.w(TAG, "on activity result end"); } public void onResume() { super.onResume(); Log.w(TAG, "on resume start"); }
结果,如果通过方式1 startActivityForResult,会发现fragment中的onActivityResult先被调用,然后到host activity中的onActivityResult,但是host activity中获取的requestCode是一个随机值:
FirstFragment: on activity result start to deal with: 12
FirstFragment: on activity result end
MainActivity: on activity result start to deal with: 196620
MainActivity: on activity result end
MainActivity: on resume start
FirstFragment: on resume start
如果是方式2,fragment中的onActivityResult不会被调用,host activity中获取到的requestCode是准确的:
MainActivity: on activity result start to deal with: 13
MainActivity: on activity result end
MainActivity: on resume start
FirstFragment: on resume start
refer onActivityResult not being called in Fragment
这样的问题也需要在androidannotations中引起注意,
ProcessActivity_.intent(this).startForResult(12)
这边intent中用this,还是getActivity(),onActivityResult的响应是不一样的
相关推荐
对小屏手机、全面屏手机、带虚拟按键手机进行了适配和优化,确保每一个界面细节都能处理到位、每一个功能细节都能符合大众的需求、乃至每一行代码都能贴合 Android 程序员的审美观。 优秀的代码设计:Android...
最后,关于“NativeTakePhoto”,这可能是项目中的一个类或者模块,可能负责处理拍照过程中的细节,如创建临时文件、权限检查、图片的压缩等。在实际应用中,我们需要确保用户具有存储和相机访问权限,并处理可能...
在Android开发中,选择图片...当然,实际开发中可能需要考虑更多细节,如图片旋转、权限管理、自定义裁剪比例等。通过理解和运用这些知识点,你可以构建一个完整的图片选择和裁剪功能,为用户提供便捷的图片编辑体验。
在实际开发中,还需要考虑权限管理(如请求存储权限)、图片压缩、异步处理等细节问题,以确保功能的完整性和用户体验。同时,由于Android版本的差异,可能需要适配不同API级别的设备,确保兼容性。
当然,实际开发中可能需要处理更多细节,如权限管理(对于Android 6.0及以上版本,需要在运行时请求存储和相机权限),图片的压缩处理(因为原始图片可能会很大),以及适配不同的设备和Android版本。 在提供的`...
开发者只需要在调用`getContacts`后重写`onActivityResult`,然后在其中调用`ContactFactory`的`onActivityResult`方法,传入一个回调接口(如`ContactCallback`),这样就能在成功或失败时得到相应的回调。...
在Android开发中,调用系统相册和相机是常见的功能需求。...实例源码中应该包含了这些细节,可以作为学习和参考的资源。通过对这些源码的分析和理解,开发者能够更好地掌握Android应用中与媒体相关的功能开发。
值得注意的是,由于Android版本的差异和权限管理,实际应用中可能需要处理更多细节,例如检查读写权限(对于Android 6.0及以上版本),以及处理不同设备可能返回的不同的图片URI格式。 此外,压缩包中的1_...
需要注意的是,为了兼容不同版本的Android系统,可能需要处理一些额外的细节,如权限请求(自Android 6.0 Marshmallow开始,运行时权限成为必需)。此外,随着Android版本的更新,某些API可能会发生变化,因此建议...
提到的AndroidannotationTest可能涉及到Android Annotation库,这是一个简化Android开发的工具,它可以自动处理一些常见的编程任务,如注入、事件处理和生命周期管理。例如,@EActivity注解可以自动处理Activity的...
在Android应用开发中,调用系统相机拍照是一个常见的功能需求,尤其对于社交、影像记录类的应用...在实际开发中,你可能还需要考虑图片的质量、分辨率、旋转问题、兼容性等更多细节,确保应用在不同设备上的表现一致。
你可以解压后参考代码实现细节,以便更好地理解如何在实际项目中应用这些功能。 总的来说,Android调用相机和相册显示头像涉及到了Intent的使用、图片的获取与显示以及Android权限管理。理解并掌握这些知识点对于...
在Android开发中,`Intent`是应用程序之间进行通信的重要机制,它可以用来启动活动(Activity)、服务(Service)等。...在YQY_Resoult这个示例项目中,你将找到更具体的实现细节,帮助你更好地理解和应用这些概念。
在Android应用开发中,"拍照"和"剪裁"是两个常见的...注意,为了提供更好的用户体验,还要考虑一些细节,如图片质量设置、权限处理、裁剪样式定制等。同时,考虑到隐私和安全,记得在不需要时释放资源并删除临时文件。
在实际开发中,我们还需要考虑其他细节,比如权限管理(需要申请读写存储权限),图片的压缩处理(避免占用过多内存),以及异常处理等。此外,对于Android 6.0及以上版本,需要动态请求权限。 总的来说,Android...
在Android开发中,用户经常需要通过应用访问手机的相册来选择或拍摄照片。这个过程涉及到几个关键步骤,包括请求相机...在实际开发中,还需要注意用户隐私、权限管理以及图片质量等其他细节,以提供更好的用户体验。
除了上述基本流程,还需要关注一些细节问题,如权限管理、用户体验优化、错误处理等。在实际开发中,可能还会遇到不同版本微博SDK的兼容性问题,以及微博平台政策的变化,因此需要持续关注官方文档和更新。 在提供...
实际开发中,还需要考虑异常处理、进度显示、网络状态检测等细节。对于服务端,需要设置接收图片的接口,处理上传的请求,通常会涉及文件存储、权限验证和格式检查等。服务端的具体实现则根据所选用的技术栈(如Java...
在实际开发中,还需要考虑到异常处理、图片质量控制、文件保存和权限管理等细节问题。对于Android 7.0及以上版本,注意适配文件访问权限和存储权限的新特性。同时,对于不同设备的兼容性问题,可能需要对代码进行...
在实际项目中,你可能还需要处理更多细节,例如裁剪图片、预览图片、支持多选等。对于更复杂的需求,可以考虑使用第三方库,如`Glide`或`Picasso`来处理图片加载,以及` Auswahl `或`PickerFragment`作为图片选择...