当应用程序启动时,如何确定它是冷启动还是不启动?所谓冷启动,我指的是应用程序从一开始就启动,而不是仅仅从以前的状态恢复。
:编辑:详细阐述了我的问题:我正在尝试找到应用程序的启动模式:冷启动还是暖启动。冷启动意味着应用程序从来没有启动之前或不在后台,所以它需要一个完整的启动。温暖的开始意味着它仍然在背景中,所以它可以恢复和更快地开始。如何以编程方式区分这两种启动模式?
发布于 2013-09-03 20:46:15
如果应用程序仍然在后台运行,它将首先调用onResume,而不是onCreate。
如果您的意思是第一次在设备上启动它,那么使用sqlite或共享首选项来存储数据,并在开始时检查它是否在那里。
发布于 2016-11-15 07:09:49
当我在Oodles技术公司从事Android开发时,我了解了Android的冷启动。让我分享我的知识。
飞溅屏,也称为冷启动
screen是一种活动,它将在应用程序启动时显示一段时间,并在一段时间后重定向到应用程序主活动。
何时使用启动屏幕:
以显示您的品牌徽标用户。在显示启动屏幕时从网络或其他源加载数据。使用Android启动屏幕,这样应用程序就可以在显示应用程序的其他内容之前显示其图标。Splash还用于在应用程序中执行一些后台工作,例如,在显示splash屏幕时从网络加载资源。它将给这个应用程序一个平滑的外观。
冷启动也被称为splash ,启动屏幕或冷启动,在android.As中,我认为用户应该尽快拥有任何应用程序可用的内容,但是当用户启动应用程序时,安卓会创建一个新的进程,在这个过程中向用户显示一个与应用程序主题内置的黑白屏幕,或者如果我们的应用程序更加复杂,使用应用程序对象(通常用于初始化分析、错误记录器),则输入point.There的活动主题可以加载得更多。等等,为什么黑白屏幕不是一个好东西显示给用户。如果应用程序加载时间较慢,我们可以使用一个位置持有者来填充它的真实内容,另一方面,如果我们的工作负载是复杂的,我们可以显示我们的应用程序的标志,以使应用程序看起来漂亮。
如前所述,当进程处于加载状态时,窗口管理器显示的窗口设置在应用程序主题(values>Style节)中。
特别是在android内部的值:WindowBackground中,您可以通过在中间的一个小位图上用主活动的背景颜色创建一个花哨或冷开始。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item android:drawable="@color/colorAccent" />
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_notification" />
</item>
</layer-list>layer_list必须是不透明的.And --背景颜色应该在主布局中填充颜色,如果不是,分层列表将始终显示在活动中。
activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/colorAccent"
>
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?colorPrimary"
android:elevation="4dp"/>
</LinearLayout>SplashActivity.java
package com.weone.android.controllers.activities;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.provider.MediaStore;
import android.util.Log;
import com.crashlytics.android.Crashlytics;
import com.crashlytics.android.core.CrashlyticsCore;
import com.weone.android.BuildConfig;
import com.weone.android.R;
import com.weone.android.utilities.database.MyPrefs;
import com.weone.android.utilities.network.gcm.GcmHandlerActivity;
import butterknife.ButterKnife;
import io.fabric.sdk.android.Fabric;
/**
* Created by oodles on 15/1/16.
*/
public class SplashActivity extends GcmHandlerActivity {
Intent intent;
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
setContentView(R.layout.top_activity);
ButterKnife.bind(this);
initViews();
}
private void initViews() {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
intent = new Intent(mContext, DrawerActivity.class);
startActivity(intent);
finish();
}
}, 1000);
}
}https://stackoverflow.com/questions/18385939
复制相似问题