screen-Android 的 Splash Screen不能运行

问题描述

Android 的 Splash Screen不能运行

我开发一个 android 应用程序,当检查文件是否更新,程序启动时应该显示一个 Splash Screen。
如果文件不更新,它启动了一个 Async Task 来更新文件。问题是当文件实际上需要更新时,只显示 Splash Screen 的图像,否则,执行检查时会显示黑屏。
SplashScreen activity:

   public class SplashActivity extends Activity
   {
    private final static String placesFile = "places";
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_splash);
    }

    @Override
    protected void onResume()
    {
        super.onResume();

        if(!isFileUpdated()){
            new PlacesService(this).execute();
        }else{
            intentAndFinish();
        }

    }
    private void intentAndFinish() {
        finish();
        Intent mainIntent = new Intent(this, MainActivity.class);
        startActivity(mainIntent);
    }

    /**
     *
     * @return false if Places Data is too old
     */
    private boolean isFileUpdated() {
        int daysOld = 0;
        File f = new File(this.getFilesDir().getAbsolutePath() +"/"+placesFile);
        if(f.exists()){
            System.out.println("existe");
        }
        Date d = new Date();
        Date currentDate = new Date(System.currentTimeMillis());
        d.setTime(f.lastModified());
        if(currentDate.compareTo(d)>0)
            daysOld = determineDifferenceInDays(d, currentDate);
        return daysOld < Consts.PLACES_DAYS_OLD_QTY_PERMITTED?true:false;
    }
    private static int determineDifferenceInDays(Date date1, Date date2) {
        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTime(date1);
        Calendar calendar2 = Calendar.getInstance();
        calendar2.setTime(date2);
        long diffInMillis = calendar2.getTimeInMillis() - calendar1.getTimeInMillis();
        return (int) (diffInMillis / (24* 1000 * 60 * 60));
    }

    public void onResultFromAsyncTask(boolean finished) {
        if(finished){
            intentAndFinish();
        }
    }
}

activity_splash.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">

    <ImageView android:src="@drawable/splash_es"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
               />
</LinearLayout>
时间: 2024-09-23 19:11:13

screen-Android 的 Splash Screen不能运行的相关文章

Android开发基础之创建启动界面Splash Screen的方法_Android

本文实例讲述了Android开发基础之创建启动界面Splash Screen的方法.分享给大家供大家参考.具体如下: 启动界面Splash Screen在应用程序是很常用的,往往在启动界面中显示产品Logo.公司Logo或者开发者信息,如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间. Android 应用程序创建一个启动界面Splash Screen非常简单.比如创建一个工程MySample,主Acitity就叫MySample,创建另一个Activ

《BackTrack 5 Cookbook中文版——渗透测试实用技巧荟萃》—第1章1.6节修复启动画面(Splash Screen)问题

1.6 修复启动画面(Splash Screen)问题 当我们第一次进入全新安装的BackTrack系统时,会注意到启动画面消失了.要想人工修复这个问题,就要先解压缩启动引导程序Initrd,对其进行修改,然后再次压缩.好在有bash脚本可以自动完成这么麻烦的事.这个脚本的作者是Mati Aharoni(有人也称他为Muts,他是BackTrack的创始人). 操作步骤 仅需要输入如下命令,就可以修复启动画面: fix-splash 这个程序的运行过程如图1.21所示.

[JavaME]利用java.util.TimerTask来做Splash Screen的N种方法

请参考java.util.TimerTask. TimerTask is something like Timer in VisualBasic. You can sepcify a time period in milliseconds for your requirement"一幅LOGO显示完以后,几秒种自动显示下一幅LOGO".  Here is an sample code. public void testTimer() {MyTimerTask myTimerTask =

响应事件-android studio编译无错误,运行时显示,但点击button不响应按键事件

问题描述 android studio编译无错误,运行时显示,但点击button不响应按键事件 原因:自从Android 3.2(API 13),screen size也开始跟着设备的横竖切换而改变.这会导致activity重新加载方法:在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设 置""orientation"",你

android聊天源码,运行问题

问题描述 android聊天源码,运行问题 http://download.csdn.net/detail/weidi1989/4626964 导入到了eclpise,但是客户端运行就自动终止了,求解决

进程-android进城服务(一直运行脚本?)

问题描述 android进城服务(一直运行脚本?) 安卓可以写一个类,无论切换哪个activity这个类在进行嘛?新手求教! 解决方案 http://www.cnblogs.com/devinzhang/archive/2012/01/02/2309733.html 解决方案二: Android Service---在前台运行服务Android Service---在前台运行服务使用startForeground让android服务前台运行

android判断软件是否第一次运行的方法

  本文实例讲述了android判断软件是否第一次运行的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 SharedPreferences sharedPreferences = this.getSharedPreferences("share", MODE_PRIVATE); boolean isFirstRun = sharedPreferences.getBoolean("isFirstRun", true);

activity-判断android应用是否在后台运行

问题描述 判断android应用是否在后台运行 在android应用中有一个webView. 下面代码中我用toast显示加载进度: webView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view int progress) { super.onProgressChanged(view progress); toast.setText(""Lo

如何获得一组已经安装的android应用程序然后选择一个运行?

问题描述 如何获得一组已经安装的android应用程序然后选择一个运行? 我已经试了: Intent intent = new Intent(ACTION_MAIN); intent.addCategory(CATEGORY_LAUNCHER); 但是这只显示那些预先安装的或者是可以运行ACTION_MAIN Intent类型的应用程序 我也知道我可以用PackageManager来获得所有的已经安装的应用程序,但是我怎么能够用这个来运行一个特定的应用程序? 谢谢. 解决方案 下边的代码是获得在