2013-06-21 115 views
2

我正在製作andengine動態壁紙。問題是,因爲我有很多紋理,我的牆紙onresume的加載需要很多時間。我如何減少這個時間。此外,我想在onresume()方法中插入Toast消息,以便用戶不會因加載緩慢而感到惱火。但是,當我嘗試在簡歷上放置吐司消息時,我似乎得到了looper.prepare()錯誤。我應該如何把吐司消息?如何在Andengine Live Wallpaper服務中使用Toast消息

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) 

回答

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

runOnUiThread不在服務運行。 –

+0

嘗試'Toast.makeText(getApplicationContext(),「加載壁紙」,Toast.LENGTH_LONG).show();' – Alexey

+0

仍然收到錯誤.. –

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();  
     } 
    }); 
}