0

Main と Splash の 2 つのアクティビティがあります。私の目標は、スプラッシュ アクティビティを 5 秒間表示してから、メイン アクティビティを開始することです。コンピューターのエミュレーターで Splash アクティビティを開始すると、すべて問題ありません。実行中のデバイスが私の携帯電話の Nexus 5 (コンピューターに接続されている) の場合、携帯電話にはスプラッシュ アクティビティが少し (2 ~ 3 秒) 表示され、ホーム画面に変わり、(2 ~ 3 秒後) メイン アクティビティが開始されます。apk ファイルを使用して携帯電話にアプリをインストールすると、すべて正常に動作します。私のメインクラスには特別なものはありません。それが重要な場合、私は Android Studio を使用しています。私のスプラッシュ画面は普通の画像です。私のスプラッシュ アクティビティ:

 @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.splash);
            Thread timer = new Thread() {
                public void run() {
                    try {
                        sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } finally {
                        startActivity(new Intent("com.example.app.MAIN"));
                    }
                }
            };
            timer.start();
        }

        @Override
        protected void onPause() {
            super.onPause();
            finish();
        }

LogCat:

04-27 16:59:34.655    2502-2502/? I/Crashlytics﹕ Initializing Crashlytics 1.1.10.12
04-27 16:59:34.735    2502-2506/? D/dalvikvm﹕ GC_CONCURRENT freed 316K, 3% free 16924K/17272K, paused 12ms+5ms, total 34ms
04-27 16:59:34.735    2502-2523/? D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 12ms
04-27 16:59:34.735    2502-2516/? D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 12ms
04-27 16:59:34.745    2502-2502/? E/OpenUDID﹕ Initialisation isn't done
04-27 16:59:34.775    2502-2506/? D/dalvikvm﹕ GC_CONCURRENT freed 444K, 3% free 16992K/17468K, paused 2ms+2ms, total 20ms
04-27 16:59:34.775    2502-2515/? D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 4ms
04-27 16:59:34.785    2502-2502/? D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 5ms
04-27 16:59:34.785    2502-2530/? D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 5ms
04-27 16:59:34.785      761-809/? I/ActivityManager﹕ Killing 2332:com.android.providers.calendar/u0a1 (adj 15): empty #17
04-27 16:59:34.835    2502-2502/? V/AmazonInsightsSDK﹕ Firing Session Event: _session.start
04-27 16:59:34.835    2502-2502/? I/AmazonInsightsSDK﹕ Amazon Insights SDK(2.1.16.0) initialization successfully completed
04-27 16:59:34.845    2502-2536/? I/AmazonInsightsSDK﹕ Attempting to retrieve variation(s) for project(s):'Sponsored in feed'
04-27 16:59:34.865    2502-2506/? D/dalvikvm﹕ GC_CONCURRENT freed 462K, 3% free 17024K/17516K, paused 3ms+3ms, total 30ms
4

1 に答える 1

0

UI スレッドから startActivity を呼び出す必要があります。これを行う簡単な方法は、独自のスレッドを直接作成する代わりに AsyncTask を使用することです。

    new AsyncTask<Void, Void, Void>() {

        @Override
        protected Void doInBackground(Void... params) {
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            startActivity(new Intent("com.example.app.MAIN"));
        }

    }.execute();
于 2014-09-04T22:25:12.050 に答える