【问题标题】:How to use Toast messages in Andengine Live Wallpaper Service如何在 Andengine 动态壁纸服务中使用 Toast 消息
【发布时间】:2013-06-21 02:36:01
【问题描述】:

我正在制作一个andengine 动态壁纸。问题是,因为我有很多纹理,所以加载我的壁纸 onresume 需要很多时间。我如何减少这个时间。我还想在 onresume() 方法中插入一条 toast 消息,这样用户就不会因加载缓慢而烦恼。但是当我尝试将 toast 消息放在简历上时,我似乎遇到了 looper.prepare() 错误。我应该如何放置 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)

【问题讨论】:

    标签: android andengine toast live-wallpaper


    【解决方案1】:
    public void onResumeGame() {
        super.onResumeGame();
        getEngine().start();
        Toast.makeText(getApplicationContext(), "Loading Wallpaper", Toast.LENGTH_LONG).show();
    }
    

    【讨论】:

    • 试试Toast.makeText(getApplicationContext(), "Loading Wallpaper", Toast.LENGTH_LONG).show();
    【解决方案2】:

    你需要在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();     
            }
         });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多