2017-08-15 51 views
-3

我有兩個活動SplashScreenMainActivity開始兩個活動同時在前臺其他背景

MainActvity下載一些數據並顯示它。

現在我想開始在應用程序啓動,MainActivity在後臺和SplashScreen在前臺的兩個活動,當MainActivity下載的數據完成時我想使MainActivity前景並完成SplashScreen。

我見過很多解決方案,但沒有人在我的情況下很好。 請給我一些建議或例子。

+0

爲什麼你需要一個'Activity'來下載數據嗎?您可以啓動背景「線程」或「服務」或使用「AsyncTask」,所有這些都可以在您的「SplashScreen」招待您的用戶時在後臺下載數據。數據完全下載後,您可以啓動「Main'Activity」並告訴您的「SplashScreen」完成。 –

+0

至少我們需要啓動主要活動中數據下載的方法/功能。所以問題再次變得如何在後臺啓動一個活動。 還是有辦法啓動asynk任務,而不會調用它的活動我不知道,因爲我幾天前開始android.If你有一個代碼,請發送給我或鏈接,如果有任何這種具體情況@ david-wasser –

+0

http ://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html –

回答

0

我認爲最好讓啓動畫面下載數據,並在完成時顯示新的活動(MainActivity)。在onStart metod中使用存儲在手機上的下載數據。

你舉的例子:只有這樣,你可以有解決這個你的方式是開始MainActivity第一和在onStart開始閃屏:

class SplashScreen extends Activitiy { 

    public void onStart() { 
     EventBus.register(this); 
    } 

    @Subscribe 
    public void finishedDownload(FinishedDownloadEvent) { 
     this.finish() 
    } 
} 

class MainActivity extens Activity() { 

    public void onStart() { 
     open(new Intent(SplashScreen.class)); // We would like to have 

     download(); 
    } 

    public void download (OnFinish onFinish) { 
     ... download 

     EventBus.post(new FinishedDownloadEvent()); 
    } 
} 

我忘了:

class EventBus { 

    private final static Bus instance = new Bus(); 

    public static void register (Object obj) { 
     instance.register(obj) 
    } 

    public static void post (Event obj) { 
     instance.post(obj) 
    } 

} 

EventBuss

+0

通過此代碼將變得更加混亂。由於SplashScreen沒有下載數據的編碼,並且只有進度對話框。主要活動有碎片和下載數據和其他正在進行活動的東西。 請等候,請以另一種方式給我建議@John Tribe –

+0

我的方法是減少內存消耗並記住活動應該作爲獨立工作人員工作。 BTW。我將創建下載數據的服務。所以它看起來像SplashScreen中的service.download(new OnFinishCallback())和MainActivity中的service.getData(),所有的邏輯都封裝在我的服務中。 –

+0

可以舉個例子。 如何啓動這兩個活動和'intent.putExtra(「東西」)'並將其放入spalshScreenn中,如果條件可以在使用'intent.getExtra(「something」)的「something」時起作用;' 它會工作與否? @約翰部落 –