2

我正在制作一个andengine 动态壁纸。问题是因为我有很多纹理,所以加载我的壁纸 onresume 需要很多时间。我如何减少这个时间。我还想在 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)
4

2 回答 2

0
public void onResumeGame() {
    super.onResumeGame();
    getEngine().start();
    Toast.makeText(getApplicationContext(), "Loading Wallpaper", Toast.LENGTH_LONG).show();
}
于 2013-06-21T07:36:29.833 回答
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();     
        }
     });
}
于 2014-03-12T17:05:12.677 回答