2012-11-28 32 views
0

我使用cocos2dx將現有的遊戲從ios移植到android。當應用程序暫停時,例如通過單擊設備上的「鎖定」按鈕,應用程序正在暫停/睡眠。但是,當設備重新啓動,並且我的應用再次出現時,它會凍結幾秒鐘。我想要做的是顯示遊戲模式消息,告訴用戶他/她應該等待一秒,直到遊戲從凍結模式返回。但我只是可以做到這一點。Android pre onPause通知

我試圖在「onPause」和「onResume」上顯示消息,但消息直到凍結模式結束才顯示,我希望在應用程序重新出現時顯示消息。

我該如何做這項工作?

關於Ios它可以在應用程序轉到背景之前通知..「applicationWillResignActive」,我在android上找不到像這樣的東西。 Android上有任何通知/委託功能,例如「pre-onPause」嗎?

任何意識都被讚賞。

最佳

+0

有什麼顯示的onPause一個對話框的問題( )在super.onPause()調用之前? – Simon

+0

freez是什麼意思?你是否在onResume做了一些重新初始化? – marcinj

回答

0

您可以創建一個BroadcastReceiver偵聽SSCREEN_OFF意圖,並顯示您的對話框當這種情況發生,這樣,它仍然會出現在屏幕回來的。

public class ScreenReceiver extends BroadcastReceiver { 
    /** 
    * @see android.content.BroadcastReceiver#onReceive(Context,Intent) 
    */ 
    @Override 
    public void onReceive(final Context context, Intent intent) { 

     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      //Put your Dialog showing code here 
     } 
    } 
} 

那麼你的活動中,你可以實例化和註冊您的接收器是這樣的:

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); 
BroadcastReceiver mReceiver = new ScreenReceiver(); 
registerReceiver(mReceiver, filter); 
+0

謝謝。直到onPause之後纔會觸發/調用,並且我需要在調用onPause之前調用的某些內容。 – tomas

0

在AppDelegate類裏面的cocos2d-X項目有功能applicationDidEnterBackground(),其中其停止動畫那是什麼凍結是所有關於那麼AppDelegate :: applicationWillEnterForeground()是動畫重新開始,這需要時間,當您的應用程序再次出現的功能

所以把對話框或說暫停屏幕在applicationDidEn terBackground(),然後做你想要的方式

有可以是我使用的另一種方式,但它需要JNI調用 我所做的是我已經從JNI的Android調用的Cocos2D-X ..因爲我需要一切廣播接收器,電池指示燈等等

所以每當發生的這些事情,我給從我的onPause方法的JNI調用然後與pauseScene在cocos2d-x出現

+0

謝謝。當我告訴消息框顯示時,當applicationDidEnterBackground() - 或onPause時,它仍然不顯示,直到應用程序從凍結模式返回。我認爲ccdirector不會更新/繪製,直到從Freeze返回(在onResume之後)。 – tomas

+0

@tomas:我想它應該工作..yah,如果它的重進程ccdirector需要時間來更新...在從簡歷中得到..但你在DidEnterBackground中調用你的消息框..看到它,你在stopAnimation之前調用它( ).....這樣一旦它進入後臺nd直到ccdirector停止所有渲染和動畫,你將會得到這個消息框,並且在從前景來到之後,你可以恢復相同的d – user1201239