Articles of android lifecycle

无法解决:android.arch.lifecycle:extensions:1.0.0-alpha1 android studio 3.0

我正在android studio 3.0中使用android插件’com.android.tools.build:gradle:3.0.0-alpha1’和gradle version gradle-4.0-milestone-1-all.zip构建一个项目。 二手maven repo: maven { url ‘https://maven.google.com’ } 此外,在我的项目中使用android Room持久性和生命周期。 已经在我的应用程序gradle文件中声明了以下依赖项: compile “android.arch.lifecycle:extensions:1.0.0-alpha1” compile “android.arch.persistence.room:runtime:1.0.0-alpha1” annotationProcessor “android.arch.lifecycle:compiler:1.0.0-alpha1” annotationProcessor “android.arch.persistence.room:compiler:1.0.0-alpha1” 同步并构建项目时,它显示以下错误: Failed to resolve: android.arch.lifecycle:extensions:1.0.0-alpha1 我是否遗漏了此问题或某些其他解决方案。

屏幕打开时,Wi-Fi或CPU是否可以进入睡眠状态?

Android上有WakeLock和WifiLock – 如果我的屏幕永远不会关闭,我是否需要这些? 我使用持久连接(例如WebSockets)几十分钟甚至几小时。 我的屏幕是否总是足以防止设备丢失这些连接(如果我们假设连接仍然可用且服务器正常)? 为了保持屏幕,我使用标准方式: getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 文档说的是什么: 为了避免耗尽电池,一个闲置的Android设备很快就会睡着了。 ( https://developer.android.com/training/scheduling/wakelock.html ) 通常,当用户暂时不使用设备时,Wi-Fi无线电可能会关闭。 ( http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html ) 这是否意味着…… 当用户长时间不与设备交互时(即使屏幕仍然打开),Wi-Fi无线电或CPU可能会进入睡眠模式或关闭? 而且,更具体地说,当仍有Activity使屏幕保持打开时,后台任务(例如IntentService )的Wi-Fi或移动数据连接是否可以进入hibernate状态?

有一个活动实例

我有一个活动导航和后台堆栈的问题,我希望你能为我清理它。 问题 Root活动>>> SecondActivity >> HomeButton 这然后带我到主页,从那里我选择… Gmail >>消息>>在我的应用程序中打开附件>> ImportActivity >> RootActivity 结果是正在启动一个新任务,并且正在使用我的应用程序的另一个实例。 这是不可接受的,因为我不想运行两个单独的任务我只想要一个。 期望的结果 我想要发生的是当用户打开附件并且ImportActivity完成它的操作(它将android:noHistory设置为true)并调用startActivity(intent) , RootActivity已启动,但只保留一个实例和其余活动在原始任务(在本例中为SecondActivity )的SecondActivity被删除。 我想要这个的原因是,如果用户在导入文件后导航出我的应用程序,然后触摸应用程序图标,它会加载第一个任务及其后台堆栈,我有两个任务在运行,其中用户可以在两个不同的部分我的申请立刻。 我试过的 我玩过启动模式,但没有一个真正给我提供我需要的function。 启动模式我试过.. android:launchMode =“singleTask” – 这只是每次启动时再次启动root活动。 即使用户按下我的应用程序内的主页按钮并触摸了应用程序图标,也会破坏后面的堆栈。 android:launchMode =“singleInstance =不允许任何其他活动在任务中运行。 此外,当调用启动RootActivity的意图时,我使用以下内容无济于事。 Intent i = new Intent(ImportActivity.this,TrackingActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); 有可能做我想要的吗? 提前致谢

Android – 在卸载时保留或删除应用程序创建的文件

我创建了一个创建文件并将文件存储到SD卡的应用程序。 有没有办法将文件夹与应用程序绑定,以便在用户在Android设备上运行卸载时删除所有文件?

片段生命周期与它的活动有关

情况我的活动等待异步操作,在它从异步操作中听到后,它需要将信息传递给其中的2个片段。 要求 1.两个片段都需要对它们进行onCreateView调用才能加载它们的布局.2。它们需要自己附加到它们的活动,以便getActivity()工作。 我在两个片段中都写了一个setData()方法,并在活动的生命周期中寻找“正确”的位置来调用它们。 onCreate()不起作用,活动的onStart()不起作用,片段的onStart()不起作用。 什么都行不通,我在这里错过了什么?

Android如何在标签更改时停止刷新片段

我有以下代码: MainActivity.java package com.erc.library; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.FragmentTransaction; import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Color; import android.os.Bundle; import android.os.Environment; import android.os.StrictMode; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; import com.erc.sayeghlibrary.adapter.TabsPagerAdapter; public class MainActivity extends FragmentActivity […]

公共静态variables和Android活动生命周期管理

根据文档,Android操作系统可以杀死后台堆栈后面的活动。 所以,比如说我有一个应用程序并打开主要活动(让我们称之为活动A)。 在这个公共活动类中,我声明并初始化一个公共静态variables(让我们称之为“foo”)。 在Activity A的onCreate()方法中,我然后更改“foo”的值。 从活动A开始,用户在我的应用程序中启动另一个名为Activity B的活动。在活动B中使用variables“foo”。在用户导航到其他应用程序中的某些其他活动后,活动B将暂停。 最终,在发生内存不足之后,可以杀死活动A然后活动B. 用户导航回我的应用程序后,它会重新启动(实际上是“重新创建”)活动B. 怎么了: 当活动A的onCreate()方法运行时,此时variables“foo”是否具有设置的值? variables“foo”不存在? variables“foo”存在,但现在是初始化值,而不是Activity A的onCreate()方法中设置的值?

片段生命周期:何时不调用“ondestroy”和“ondestroyview”?

想象一下这种情况:我在Pager有一个Fragment 。 我尝试切换到其他应用程序,以便拥有我的寻呼机(和我的片段)的活动将被停止并最终被暂时销毁。 所以,当我回到我的Activity时,会调用Fragment的回调onCreate , oncreateview等等。 但是之前没有调用Fragment的onDestroy回调! 似乎在“onStop”之后,片段立即被销毁。 这是正常的行为吗? 是不是因为没有调用onDestroy而销毁了Activity ?

在FragmentTransaction.replace()后跟后退按钮后,不会重新创建ViewPager片段

我正在尝试实现保存和恢复状态,但是在使用PreferenceFragment替换主Fragment然后按下后退按钮时遇到问题。 我的主要Fragment包含一个带有FragmentPagerAdapter的ViewPager ,其中有3个Fragments可以ViewPager 。 在点击后退按钮后,没有调用我的3 Fragment的Fragment.onCreateView()回调。 我已经尝试了所有我在这里遇到的解决方案,但是我无法解决这个问题。 另一个可能需要注意的重要事项是,我的3个ViewPager Fragment的数据存储在单独的类中,这些类是实例化的,可通过Activity访问。 3 Fragment都包含RecyclerView用于列出大量数据。 这样做是为了清洁,但也是为了使这些数据在Activity持续存在。 这可能不是问题,因为它在启动应用程序时工作正常,但也因为主要问题是我的Fragments没有重新创建。 意外行为: 在应用程序创建时,一切正常,但是当我用另一个替换我的主Fragment (包含带有FragmentPagerAdapter的ViewPager )然后按下后退按钮时,不会重新创建ViewPager中的Fragment 。 我的主要Fragment的onCreateView() 被调用。 问题: 我错过了什么? 是否还应该创建一些其他回调? 我应该在哪里以及如何重新创建Fragments ? 我试过了什么: 更改了正在使用的FragmentAdapter ,但我应该使用getSupportFragmentManager()就像这里的解决方案一样。 编辑:使用错误的FragmentManager实际上是我的麻烦的来源。 请参阅下面的答案。 将@Override public int getItemPosition(Object object) {return POSITION_NONE;}到FragmentPagerAdapter ,如此处所示 。 根据我的理解,从FragmentPagerAdapter更改为FragmentPagerAdapter ,这在这里无关紧要。 FragmentStatePagerAdapter的内部实际上保留了Fragments ,但它们不会重新渲染。 在调用onCreateView()时,使用FragmentTransaction添加主Fragment并在该Fragment的其他几个回调中,请参阅下面的MMMainFragment 。 各种其他的东西。 我的MainFragment类具有相应的XML布局 public class MMMainFragment extends Fragment { private MMViewPager […]

当活动被破坏时,活动背叛的不当行为

我有两个活动; 让我们说A和B.在activity A有一个广播接收器注册了侦听将完成活动A的特定事件。我在onCreate()注册广播接收器,并在activity A onDestroy()中销毁它。 为简单起见, activity B有一个名为“销毁活动A”的button 。 当用户点击button ,应销毁activity A 通常所有这些都运行顺利,没有任何问题,但问题出现在以下场景中: 1)假设我在activity B ,我按Home键将应用程序移动到后台然后如果我使用其他资源繁重的应用程序,Android系统将杀死我的应用程序以释放内存。 然后,如果我从最近的任务中打开我的应用程序,将恢复activity B ,并且将调用onCreate() , onResume()等方法。 现在我按下button来销毁activity A ,但活动A已被销毁,因此activity A的onCreate() , onResume()等方法将不会被调用,除非我按下back button进入activity A 因此, broadcast receiver未注册以监听事件。 2)当用户在设备的设置中从Developer选项中选择“Do not keep activities”时,会出现同样的问题。 我一直在寻找解决这个问题很长一段时间,但我无法find合适的答案。 处理此方案的最佳方法是什么? 这是Android的错误吗? 这个问题应该有一些解决方案。 请帮帮我。