2

アンドエンジンのライブ壁紙を作っています。問題は、テクスチャがたくさんあるため、壁紙 onresume の読み込みに時間がかかることです。この時間をいかに短縮するか。また、onresume() メソッドにトースト メッセージを挿入して、ユーザーが読み込みの遅さにイライラしないようにしたいと考えています。しかし、トーストメッセージを再開しようとすると 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

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 に答える