android:应用程序停止运行,然后在屏幕关闭时崩溃

贡扎洛

该应用程序运行正常,但是在一段时间不活动后智能手机屏幕消失时,该应用程序将停止运行。当我按下按钮返回手机的主菜单时,它只是崩溃了(停止了)。

如果屏幕不熄灭,或者应用程序继续运行,我希望什么,或者如果屏幕熄灭时应用程序刚刚退出,那会很好。我就是不知道

非常感谢。

日志猫

12-14 21:47:07.526: E/AndroidRuntime(1111): FATAL EXCEPTION: main
12-14 21:47:07.526: E/AndroidRuntime(1111): Process: com.IceDriftGFS.icedrift, PID: 1111
12-14 21:47:07.526: E/AndroidRuntime(1111): java.lang.RuntimeException: Unable to pause activity {com.IceDriftGFS.icedrift/com.IceDriftGFS.icedrift.Main}: java.lang.NullPointerException: Attempt to invoke virtual method 'void java.lang.Thread.join()' on a null object reference
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3225)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3184)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3159)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.app.ActivityThread.access$1000(ActivityThread.java:144)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.os.Looper.loop(Looper.java:135)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.app.ActivityThread.main(ActivityThread.java:5221)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at java.lang.reflect.Method.invoke(Native Method)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at java.lang.reflect.Method.invoke(Method.java:372)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
12-14 21:47:07.526: E/AndroidRuntime(1111): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void java.lang.Thread.join()' on a null object reference
12-14 21:47:07.526: E/AndroidRuntime(1111):     at com.IceDriftGFS.icedrift.Main$Run.pause(Main.java:114)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at com.IceDriftGFS.icedrift.Main.onPause(Main.java:54)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.app.Activity.performPause(Activity.java:6044)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1294)
12-14 21:47:07.526: E/AndroidRuntime(1111):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3211)
12-14 21:47:07.526: E/AndroidRuntime(1111):     ... 11 more

代码:

@SuppressLint("ClickableViewAccessibility") 
public class Main extends Activity implements OnTouchListener{

    Run run;
    static float Xpos, Yinc;
    static boolean actionDown = false;
    static int x, y;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                             WindowManager.LayoutParams.FLAG_FULLSCREEN);

        super.onCreate(savedInstanceState);

        run = new Run(this);
        run.setOnTouchListener(this);               
        setContentView(run);
    }

    @Override
    protected void onResume(){
        super.onResume();
        run.resume();
    }

    @Override
    protected void onPause(){
        super.onPause();
        run.pause();
    }

public class Run extends SurfaceView implements Runnable{

    SurfaceHolder surfaceHolder;
    Canvas canvas;
    Thread thread = null;
    boolean isRunning = true;

    DisplayMetrics display;

    Player player;
    Background background;
    Walls walls;


    boolean plusCount = false;

    public Run(Context context) {
        super(context);
        surfaceHolder = getHolder();
        thread = new Thread(this);
        thread.start();

        display = context.getResources().getDisplayMetrics();

        if(display.widthPixels > display.heightPixels){
            Toast.makeText(context, "Your device is not compatible with this game", Toast.LENGTH_LONG).show();
        }

        player = new Player(context, display.widthPixels, display.heightPixels);
        background = new Background(context, display.widthPixels, display.heightPixels);
        walls = new Walls(context, display.widthPixels, display.heightPixels);


        Xpos = display.widthPixels - display.widthPixels/6;

        Yinc = display.heightPixels/280;
    }   

    public void pause(){
        isRunning = false;
        while(true){
            try{
                thread.join();
            }catch (InterruptedException e){
                e.printStackTrace();
            }
            break;
        }
        thread = null;
    }   

    public void resume(){
        isRunning = true;
    }   

    @Override
    public void run() {
        while(isRunning){   
            if(!surfaceHolder.getSurface().isValid())
                continue;
            canvas = surfaceHolder.lockCanvas();

            try {
                Thread.sleep((long) 16.6666666667);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            background.run(canvas, Yinc);
            player.run(canvas, Xpos, actionDown);
            walls.run(canvas, Yinc);



            surfaceHolder.unlockCanvasAndPost(canvas);          
        }
    }



}

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        x = (int) event.getX();
        y = (int) event.getY();

        switch(event.getAction()){
            case MotionEvent.ACTION_DOWN:
                actionDown = true;
                Xpos = event.getX();    
            break;

            case MotionEvent.ACTION_UP:
                actionDown = false;
            break;
        }   
        return true;
    }
}
阿米拉格

要使屏幕始终显示,您可以锁定他。将其放在您的AndroidManifest.xml中:

<uses-permission android:name="android.permission.WAKE_LOCK" />

这样可以防止屏幕熄灭。

关于错误,您能否让我们看到logCat,我们将能够看到错误或代码,并且我们将能够了解发生了什么。

编辑:现在我们可以看到代码和错误了,我们可以看到您已经获得了NullPointerException。我认为您应该添加if(thread!= null),thrad.join()将在他的内部。请让我知道它是否有效:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android线程:屏幕关闭时应用程序挂起

来自分类Dev

Android线程:屏幕关闭时应用程序挂起

来自分类Dev

切换屏幕时关闭android应用程序?

来自分类Dev

关闭后停止处理程序,然后在Android中打开应用程序

来自分类Dev

使用服务Android时,应用程序在关闭时崩溃,因为我试图使用意图

来自分类Dev

如果Android服务崩溃,它将关闭正在运行的应用程序吗?

来自分类Dev

暂停时Android应用程序崩溃

来自分类Dev

暂停时Android应用程序崩溃

来自分类Dev

在根环境中启动时启动应用程序,然后进行监视,如果关闭或崩溃则重新启动

来自分类Dev

触摸屏幕时ios应用程序崩溃

来自分类Dev

progressDialog应用程序在屏幕旋转时崩溃

来自分类Dev

当 popoverPresentationController 和键盘关闭时应用程序崩溃

来自分类Dev

Android自定义相机应用程序在启动时“不幸停止”而崩溃

来自分类Dev

屏幕关闭时如何打开应用程序

来自分类Dev

如果未关闭应用程序(在后台运行),是否会导致应用程序崩溃?

来自分类Dev

Android:应用程序在关闭后会在onTaskCompleted上崩溃

来自分类Dev

Android:关闭应用程序后服务崩溃

来自分类Dev

当我点击运行应用程序时,android 服务消失了,当应用程序崩溃时也是如此

来自分类Dev

Titanium SDK 3.2.0-我的Android应用程序在启动屏幕时停止

来自分类Dev

从应用程序主屏幕切换到其他活动时,应用程序崩溃

来自分类Dev

Spring WebApp-在应用程序停止时关闭线程

来自分类Dev

播放应用程序关闭时未调用停止挂接

来自分类Dev

Spring WebApp-在应用程序停止时关闭线程

来自分类Dev

Android LibGDX应用程序可在本地运行,但在Alpha测试时崩溃

来自分类Dev

当我在活动上放置按钮时,Android应用程序崩溃,空活动正常运行

来自分类Dev

在尝试捕获中运行Toast时Android应用程序崩溃

来自分类Dev

对它们运行自动测试时,如何检测android中的应用程序崩溃?

来自分类Dev

Android LibGDX应用程序可在本地运行,但在Alpha测试时崩溃

来自分类常见问题

已关闭:Android:在android 9(sdk 29)以下使用com.google.android.material时,应用程序始终崩溃

Related 相关文章

  1. 1

    Android线程:屏幕关闭时应用程序挂起

  2. 2

    Android线程:屏幕关闭时应用程序挂起

  3. 3

    切换屏幕时关闭android应用程序?

  4. 4

    关闭后停止处理程序,然后在Android中打开应用程序

  5. 5

    使用服务Android时,应用程序在关闭时崩溃,因为我试图使用意图

  6. 6

    如果Android服务崩溃,它将关闭正在运行的应用程序吗?

  7. 7

    暂停时Android应用程序崩溃

  8. 8

    暂停时Android应用程序崩溃

  9. 9

    在根环境中启动时启动应用程序,然后进行监视,如果关闭或崩溃则重新启动

  10. 10

    触摸屏幕时ios应用程序崩溃

  11. 11

    progressDialog应用程序在屏幕旋转时崩溃

  12. 12

    当 popoverPresentationController 和键盘关闭时应用程序崩溃

  13. 13

    Android自定义相机应用程序在启动时“不幸停止”而崩溃

  14. 14

    屏幕关闭时如何打开应用程序

  15. 15

    如果未关闭应用程序(在后台运行),是否会导致应用程序崩溃?

  16. 16

    Android:应用程序在关闭后会在onTaskCompleted上崩溃

  17. 17

    Android:关闭应用程序后服务崩溃

  18. 18

    当我点击运行应用程序时,android 服务消失了,当应用程序崩溃时也是如此

  19. 19

    Titanium SDK 3.2.0-我的Android应用程序在启动屏幕时停止

  20. 20

    从应用程序主屏幕切换到其他活动时,应用程序崩溃

  21. 21

    Spring WebApp-在应用程序停止时关闭线程

  22. 22

    播放应用程序关闭时未调用停止挂接

  23. 23

    Spring WebApp-在应用程序停止时关闭线程

  24. 24

    Android LibGDX应用程序可在本地运行,但在Alpha测试时崩溃

  25. 25

    当我在活动上放置按钮时,Android应用程序崩溃,空活动正常运行

  26. 26

    在尝试捕获中运行Toast时Android应用程序崩溃

  27. 27

    对它们运行自动测试时,如何检测android中的应用程序崩溃?

  28. 28

    Android LibGDX应用程序可在本地运行,但在Alpha测试时崩溃

  29. 29

    已关闭:Android:在android 9(sdk 29)以下使用com.google.android.material时,应用程序始终崩溃

热门标签

归档