如何在Andengine动态壁纸服务中使用Toast消息

时间:2013-06-21 02:36:02

标签: android andengine toast live-wallpaper

我正在制作动态壁纸。问题是,由于我有很多纹理,我的壁纸加载需要花费很多时间。我该如何减少这段时间。此外,我想在onresume()方法中插入一个toast消息,以便用户不会因缓慢加载而烦恼。但是当我尝试在恢复时放入Toast消息时,我似乎得到了一个looper.prepare()错误。我应该怎么说吐司?

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

错误: -

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)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你需要在ui线程上运行它,试试这个:

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