I'm not sure to understand your question. Your game has to contain the code to unlock/list the achievements, like in the demo. You don't have to run something aside.
The order is due to the data container (a map). It is unpredictable.
Thank you Informatix.
In my program I wrote this code:
Code:
If Connection.IsSignedIn Then
'Maj du score
Leaderboards.SubmitScoreImmediate(Leaderboard_Id, ((s.SubString2(0, s.IndexOf(":")) * 60) + s.SubString(s.IndexOf(":")+1)) * 1000).SetResultEvent("GP_onScoreSubmitted")
' Unlock la réussite
Achievements.UnlockImmediate(AchievementToUnlock_Id).SetResultEvent ("GP_onAchievementUnlocked")
'Opens the dialog to see achievements
Dim i As Intent = Achievements.GetAchievementsIntent
GPUtils.StartActivityForResult(i, ACHIEVEMENTS_DLG)
End If
But this causes an error:
Leaderboards.SubmitScoreImmediate: id=CgkI1-rS6JkREAIQDA score=113000
Achievements.UnlockImmediate: CgkI1-rS6JkREAIQBw
Achievements.GetAchievementsIntent
** Activity (main) Pause, UserClosed = false **
UpdateAchievementResult -> gp_onachievementunlocked
Error occurred on line: 1130 (Main)
java.lang.NullPointerException: Attempt to read from field 'anywheresoftware.b4a.BA com.Mastermind_Legend.main.activityBA' on a null object reference
at com.Mastermind_Legend.main._gp_onachievementunlocked(main.java:3313)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:702)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:339)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:246)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:134)
at flm.b4a.googleplay.PendingResultWrapper.RaiseEvent(PendingResultWrapper.java:230)
at flm.b4a.googleplay.PendingResultWrapper.access$0(PendingResultWrapper.java:226)
at flm.b4a.googleplay.PendingResultWrapper$UpdateAchievementEvent.onResult(PendingResultWrapper.java:553)
at flm.b4a.googleplay.PendingResultWrapper$UpdateAchievementEvent.onResult(PendingResultWrapper.java:1)
at com.google.android.gms.common.api.internal.zzb$zza.zzb(Unknown Source)
at com.google.android.gms.common.api.internal.zzb$zza.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
It would seem that the functions runs without waiting for the reply of the previous.
is I made a mistake ?