在这篇文章中,我们将为您详细介绍android-当活动处于onPause状态时,在意图接收时恢复应用(活动)的内容,并且讨论关于处于活动状态的订购的相关问题。此外,我们还会涉及一些关于Activity
在这篇文章中,我们将为您详细介绍android-当活动处于onPause状态时,在意图接收时恢复应用(活动)的内容,并且讨论关于处于活动状态的订购的相关问题。此外,我们还会涉及一些关于Activity在从onResume状态到onPause状态的过程、Android Market活动意图-未找到活动、Android MVP-分离视图(onPause VS onDestroy)和状态保存、android – AdMob – 禁用请求onPause()的知识,以帮助您更全面地了解这个主题。
本文目录一览:- android-当活动处于onPause状态时,在意图接收时恢复应用(活动)(处于活动状态的订购)
- Activity在从onResume状态到onPause状态的过程
- Android Market活动意图-未找到活动
- Android MVP-分离视图(onPause VS onDestroy)和状态保存
- android – AdMob – 禁用请求onPause()
android-当活动处于onPause状态时,在意图接收时恢复应用(活动)(处于活动状态的订购)
这是我的情况:
>用户打开应用程序并使用它=>该应用程序在其屏幕之一中
>用户使用Home键在后台移动应用程序
>用户开始浏览并浏览我的网站.通过网站,某些链接可以打开应用程序
>用户单击浏览器中的链接即可启动该应用程序,但是即使活动处于onPause状态,也不会恢复活动,而是重新开始,因此当前会话丢失了.
我的主要活动是使用意图过滤器数据,因此我添加了:
<activity android:name=".HomeActivity"
<intent-filter>
<data android:scheme="myprop" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.broWSABLE" />
</intent-filter>
</activity>
因此,当用户在浏览器中单击自定义网址时,我的应用会唤醒并开始活动.
因此,如前所述,如果我的HomeActivity是onPause(意味着用户已经使用过),是否可以在保持当前用户进度的同时简单地恢复它(当然还要解析myprop参数)?
解决方法:
您需要将活动的启动模式定义为单个实例.为此,请在Android清单中更新您的Activity:android:launchMode =“ singleInstance”
之后,将打开您现有的活动,并且您将收到Activity.onNewIntent(Intent intent)的回调
Activity在从onResume状态到onPause状态的过程
1、调用成员函数向Launcher组件发送一个用户离开通知,即调用成员函数onUserleaveHint,
2.调用成员函数想laucher 发送一个中止事件通知,就是调用OnPause事件,
3、调用Queue的Work类的惊天成员函数waitToFinish等待完成前面的一些数据写入操作,比如数据写入磁盘操作,,否则重新进入OnResume状态之后,无法恢复保存的数据。
Android Market活动意图-未找到活动
android docs指出我应该能够执行以下操作来启动android市场活动.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=com.android.example"));
startActivity(intent);
但是,我收到此错误:
No activity found to handle Intent.
我需要在我的应用中显式创建活动吗?
解决方法:
阿迪尔在这一点上是正确的.您需要在模拟器上安装android marketplace应用,但默认情况下未安装该应用.必须像其他任何.apk安装一样手动安装它.
http://blog.varunkumar.me/2010/11/how-to-install-android-market-in-google.html
Android MVP-分离视图(onPause VS onDestroy)和状态保存
我正在尝试在我的应用程序中实现MVP架构.
但是,在阅读了一些博客并查看了一些示例项目示例之后,我不确定我是否完全了解分离视图的正确位置以及在异步操作后第二次附加视图后应该怎么做.
我看到的大多数示例都只是在异步调用后对视图的null验证检查进行了总结.
我将通过一个示例来阐明我的观点-通过电话号码登录/注册(主要思想是重要,而不是示例本身)
有一个显示片段的活动-LoginFragment.
用户输入他的电话号码并尝试登录.
如果用户退出-他应该导航到另一个活动(输入短信收到的代码后.)
如果用户没有退出,则应导航到注册过程-RegistrationFragment.
如果出现错误,则会出现一个带有错误消息的对话框,ErrorDialogFragment.
现在,用户按下登录按钮并等待该过程完成,一切顺利.
但是,在不那么开心的流程中(不是那么频繁,但绝对不能忽略),用户按下登录按钮,然后按下主页按钮,或者接听电话.
在方案1中,我们在onCreate / onDestroy中附加/分离视图,一旦异步登录操作完成,我们应该替换为RegistrationFragment或显示ErrorDialogFragment,就有机会遇到著名的IllegalStateException:
getting exception “IllegalStateException: Can not perform this action after onSaveInstanceState”
在方案2中,我们在onResume / onPause中附加/分离视图,一旦异步登录操作完成,由于视图已分离,我们将无法替换片段或显示对话框.
在这种情况下,我不确定该怎么做.
我们是否应该采用场景1并使用commitallowingstateloss提交事务?
恐怕这是个坏主意.
还是我们应该使用场景2.在这种情况下,当再次附加视图时,我们应该采取相应的措施,这意味着将状态(RegistrationRequied,ErrorHasOccured,LoginProcessstillRunning等)保存在Presenter / Interactor中.
有人可以对此有所启示吗?
提前致谢!
解决方法:
哦,Android生命周期的乐趣.我感到你很痛苦.
以我的个人经验,诉诸commitAllowingStateLoss通常是在后台更新Ui(视图)的症状(如您所述,UI可能会被破坏).
我的建议是,您不要在未检查活动是否已后台的情况下尝试更新ui(视情况而定,onStop或onPause).如果您的用户界面已经有背景,请记住您需要进行的更改,并在重新连接您的用户界面时进行(根据情况,选择onStart或onResume).
本质上,我是说您应该遵循方案2.是的.您将不得不以某种方式保存很多状态.
不幸的是,这并不容易,从使用事件总线一直到使用RxJava,有很多方法可以做到这一点.
每种方法都有其优点和缺点,它们实在太复杂了,无法在单个文章中进行详细讨论.
但是,我有一段博客文章是我前一段时间写的,它不需要额外的库就可以做到这一点.
现在有点过时了,但可能会给您一些想法:A Simple MVP aproach for Android
祝一切顺利.
亲切的问候,
克里斯.
android – AdMob – 禁用请求onPause()
这是我的代码,adView.LoadAd …和adView.stopLoading都会在启动时崩溃应用程序.
public class MainActivity extends Activity implements OnItemSelectedListener { @Override protected void onResume() { super.onResume(); if (AdViewStarted = true) { adView.loadAd(new AdRequest()); } } @Override protected void onPause() { super.onPause(); if (AdViewStarted = true) { adView.destroy(); } } [...] public class AdMob extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); adView = new AdView(this,AdSize.BANNER,"12345678901234567890"); LinearLayout layout = (LinearLayout) findViewById(R.id.adView); layout.addView(adView); adView.loadAd(new AdRequest()); AdViewStarted = true; } @Override public void onDestroy() { if (adView != null) { adView.destroy(); } super.onDestroy(); } } }
提前致谢
解决方法
if (AdViewStarted == true) { adView.destroy(); }
或更好
if (AdViewStarted) { adView.destroy(); }
通过win,变量名称以小写字符开头.
另外,你在onCreate尝试了什么?
这是正确的(我想,如果没有,请告诉我布局xml文件和LogCat):
LinearLayout adView = (LinearLayout) findViewById(R.id.adView); adView.loadAd(new AdRequest()); AdViewStarted = true;
今天关于android-当活动处于onPause状态时,在意图接收时恢复应用(活动)和处于活动状态的订购的介绍到此结束,谢谢您的阅读,有关Activity在从onResume状态到onPause状态的过程、Android Market活动意图-未找到活动、Android MVP-分离视图(onPause VS onDestroy)和状态保存、android – AdMob – 禁用请求onPause()等更多相关知识的信息可以在本站进行查询。
本文标签: