在同一个应用程序中启动另一个活动时,调用什么活动状态,然后单击后退按钮以导航回它?
在返回上一个活动的过程中调用了什么生命周期方法?
首先,我已经阅读了关于活动如何开始,暂停,恢复和停止的重要解释.没关系,但我有另一个问题.
Android参考中的Activity生命周期图表明,如果我调用另一个活动,将为调用活动调用onPause(),稍后当另一个活动结束时,调用者将通过onResume()恢复.
因此,如果第一个活动是Main而另一个是Other,则循环看起来像这样(伪代码):
Main.onCreate()
Main.onStart()
Main.onResume()
// Main is running... Then, the user clicks a button and Other comes in front.
Main.onPause()
Other.onCreate()
// Other's lifecycle goes here... Finally, the user returns back.
Main.onResume()
// Main is running again.
Run Code Online (Sandbox Code Playgroud)
这就是图表所说的.但我的Main首先获取onStart(),然后是onResume().
这是为什么?我误解了什么吗?
我创建了一个Android应用程序,它使用ViewPager来浏览三个片段(三个片段中的每一个都包含一个gridview).
我最近开始学习片段,并假设在我的网格视图在其片段中创建后,每个片段都将在内存中,而不必再次加载.
最近我注意到,当我从左侧片段滑动到中间片段,然后到右侧片段时,最左边的片段必须再次使用我的适配器填充其gridview.
我只是想知道为什么当我从最左边的片段导航到最右边的片段时会发生这种情况,但不是当我在并排片段之间导航时.它是否只将最新的片段保留在内存中并杀死其他片段?或者是否有其他原因导致应用程序无法将所有三个片段保留在内存中?当我在片段之间快速导航时,我的应用程序会有点滞后和缓慢,所以如果可能的话,只需要一次绘制每个gridview就好了.
我在onCreate()中填充我的arraylist(用于填充适配器),然后用onActivityCreated中的适配器填充我的gridview(Bundle savedInstanceState)
在我的申请中,我有3个活动.第一个 - 我开始活动#2的主要内容.从#2开始我开始#3,同时我完成#2.当我完成#3时,我会自动回到#1.问题:如何从3回到1时添加/运行代码?
不确定它是否有意义.但我想要做的是,当结束#3并回到#1时,我想检查文件xyz是否存在并基于它来改变活动#1中的UI.
#1中的OnResume没有运行,从不运行.(对于第一个活动,可能系统不会暂停运行)
如果只有活动#1和2,我可以使用startActivityForResult.但是有两项活动没有做我需要的......
我想知道是否需要SpiceManager的shouldStop()方法.我认为它应该从活动/片段中取消绑定可能的侦听器,但如果活动将被杀死,它是否重要?垃圾收集器仍将清理活动/片段,后台服务仍将单独完成.或者我错了吗?当你在后台线程中忘记一些引用时,Android真的会泄漏吗?
源代码中有一些(错误的)注释:对于shouldStop(),它表示它将异步进行解绑定,并且对于shouldStopandJoin()同步执行.但是应该停止调用toStopAndJoin,而且应该停止注释并且注释它主要是一种测试方法.那么我们真的需要在activity的onStop()回调中调用shouldStop吗?
我问这个是因为我想在Application上下文中有一个spicemanager实例,它没有处理清理或停止事务的特殊方法.所以我想确保没有泄漏或类似的东西.要清楚,不是真的在应用程序上下文中,而是从应用程序上下文启动并管理所有后台内容(如robospice请求或位置内容)的自定义"控制器".我正在尝试模拟MVC模式,其中所有逻辑实际上都独立于仅具有用于更改UI的@Subscribe方法的活动和片段.
编辑:实际上,如果我从应用程序上下文中调用它,那么它与Activity或Fragment的情况不同.即使活动或碎片确实泄漏,应用程序也不应该,对吧?
谢谢你的评论.
我正在制作适配器以使我的书籍集合在列表视图中可见.

如果我添加super(context,position),问题就解决了:
public BookAdapter(Context context, int position, List <Book> updatedBooksList) {
super(context, position);
this.context = context;
this.booksList = updatedBooksList ;
}
Run Code Online (Sandbox Code Playgroud)
但是,我想知道为什么我需要这个参数(int position)并调用超类构造函数?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Run Code Online (Sandbox Code Playgroud)
另外,从广义上讲,为什么我们总是(?)需要在每个onCreate中调用super.onCreate?
我们不应该覆盖我们所有的活动生命周期阶段 - onPause,onREsume,onStop,OnDestroy,但我们仍然需要在每个阶段调用super?
android oncreate activity-lifecycle android-lifecycle onpause
我有这个<intent-filter>,每次按下某个链接它打开我的应用程序但问题是它打开我的应用程序的新实例.反正有没有触发onResume()并只是恢复我的应用程序而不会丢失其状态或活动堆栈?
这是意图过滤器:
<intent-filter>
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="example.com" />
<data android:pathPattern="/.*" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
感谢用户David Wasser在下面回答我找到答案:
所以我创建了在gmail/inbox应用程序之上启动的EntryActivity:
public class EntryActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.entry_activity);
Uri uriParams = getIntent().getData();
Log.e("EntryActivity", uriParams.getHost() );
Log.e("EntryActivity", uriParams.getQueryParameter("uid") + " " + uriParams.getQueryParameter("type") + " " + uriParams.getQueryParameter("token") );
Intent startCategory = new Intent(this, GotEmailActivity.class);
startCategory.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startCategory);
this.finish();
}
}
Run Code Online (Sandbox Code Playgroud)
然后当我的应用程序在GotEmailActivity打开时,我向用户发送电子邮件,其中包含打开应用程序的链接,而GotEmailActivity …
android android-manifest android-intent android-lifecycle android-activity
我有一个ViewPager活动,在ViewPager适配器中我为每个位置提供Fragment.
一个示例Fragment是DebugFragment.我在下面写了源代码.
public class DebugFragment extends android.support.v4.app.Fragment {
private OnFragmentInteractionListener mListener;
public interface OnFragmentInteractionListener {
void onFragmentInteraction(int someValue);
}
public static DebugFragment newInstance() {
DebugFragment fragment = new DebugFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
mListener.onFragmentInteraction(0);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocalBroadcastManager.getInstance(getContext()).registerReceiver(mMessageReceiver,
new IntentFilter("com.android.example.INITIAL_REQUEST"));
}
@Override
public void onDestroy() {
LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mMessageReceiver);
super.onDestroy();
}
@Override
public void onAttach(Context context) …Run Code Online (Sandbox Code Playgroud) android android-lifecycle android-fragments android-fragmentactivity fragment-lifecycle
我知道如果我订阅了Activity或Fragment中的observable,我应该使用rxlifecycle-components或rxlifecycle-navi将它绑定到它们各自的生命周期.
但是,我现在正在从ViewHolder(扩展RecyclerView.ViewHolder)中订阅一个observable ,我担心如果视图被破坏并且订阅仍然有效会发生什么.
我应该在哪个生命周期中绑定这个可观察对象以及如何绑定?
我已经阅读了有关Android中新的架构组件的信息。因此,我想问什么是生命周期观察者,为什么我们需要它们?在什么情况下有用?感谢您的回答!