2

I am making an andengine live wallpaper. The problem is that since i have a lot of textures , the loading of my wallpaper onresume takes a lot of time. How do i reduce this time. Also I want to insert a toast message in onresume() method so that the user doesn't get irritating by the slow loading. But I seem to be getting a looper.prepare() error when i try to put the toast message on resume. How should i put the toast message?

public void onResumeGame() {
    super.onResumeGame();
    getEngine().start();
    Toast.makeText(NightSkyLWPService.this, "Loading Wallpaper", Toast.LENGTH_LONG).show();     
}

error:-

06-21 08:08:37.976: E/AndEngine(24999): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
06-21 08:08:37.976: E/AndEngine(24999):     at android.os.Handler.<init>(Handler.java:121)
06-21 08:08:37.976: E/AndEngine(24999):     at android.widget.Toast.<init>(Toast.java:68)
06-21 08:08:37.976: E/AndEngine(24999):     at android.widget.Toast.makeText(Toast.java:231)
06-21 08:08:37.976: E/AndEngine(24999):     at com.nightsky.lwp.NightSkyLWPService$37.run(NightSkyLWPService.java:1232)
06-21 08:08:37.976: E/AndEngine(24999):     at com.nightsky.lwp.NightSkyLWPService.onResumeGame(NightSkyLWPService.java:1235)
06-21 08:08:37.976: E/AndEngine(24999):     at com.nightsky.lwp.MyBaseLiveWallpaperService$1.onPopulateSceneFinished(MyBaseLiveWallpaperService.java:110)
06-21 08:08:37.976: E/AndEngine(24999):     at com.nightsky.lwp.NightSkyLWPService.onPopulateScene(NightSkyLWPService.java:293)
06-21 08:08:37.976: E/AndEngine(24999):     at com.nightsky.lwp.MyBaseLiveWallpaperService$2.onCreateSceneFinished(MyBaseLiveWallpaperService.java:122)
06-21 08:08:37.976: E/AndEngine(24999):     at com.nightsky.lwp.NightSkyLWPService.onCreateScene(NightSkyLWPService.java:116)
06-21 08:08:37.976: E/AndEngine(24999):     at com.nightsky.lwp.MyBaseLiveWallpaperService$3.onCreateResourcesFinished(MyBaseLiveWallpaperService.java:135)
06-21 08:08:37.976: E/AndEngine(24999):     at com.nightsky.lwp.NightSkyLWPService.onCreateResources(NightSkyLWPService.java:104)
06-21 08:08:37.976: E/AndEngine(24999):     at com.nightsky.lwp.MyBaseLiveWallpaperService.onCreateGame(MyBaseLiveWallpaperService.java:145)
06-21 08:08:37.976: E/AndEngine(24999):     at com.nightsky.lwp.MyBaseLiveWallpaperService.onSurfaceCreated(MyBaseLiveWallpaperService.java:86)
06-21 08:08:37.976: E/AndEngine(24999):     at org.andengine.opengl.view.EngineRenderer.onSurfaceCreated(EngineRenderer.java:80)
06-21 08:08:37.976: E/AndEngine(24999):     at org.andengine.extension.opengl.GLThread.guardedRun(GLThread.java:210)
06-21 08:08:37.976: E/AndEngine(24999):     at org.andengine.extension.opengl.GLThread.run(GLThread.java:95)
Swati Rawat
  • 1,729
  • 1
  • 19
  • 34

2 Answers2

0
public void onResumeGame() {
    super.onResumeGame();
    getEngine().start();
    Toast.makeText(getApplicationContext(), "Loading Wallpaper", Toast.LENGTH_LONG).show();
}
Alexey
  • 714
  • 8
  • 21
  • Try `Toast.makeText(getApplicationContext(), "Loading Wallpaper", Toast.LENGTH_LONG).show();` – Alexey Jun 21 '13 at 13:30
0

You need to run it on the ui thread, try this:

public void onResumeGame() {
    super.onResumeGame();
    getEngine().start();
    runOnUiThread(new Runnable() {
       @Override
       public void run() {
               Toast.makeText(NightSkyLWPService.this, "Loading Wallpaper", Toast.LENGTH_LONG).show();     
        }
     });
}