Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务活动在后台崩溃_Java_Android_Xml_Android Studio_Service - Fatal编程技术网

Java 服务活动在后台崩溃

Java 服务活动在后台崩溃,java,android,xml,android-studio,service,Java,Android,Xml,Android Studio,Service,我正在开发一个简单的服务应用程序,它每1秒递增一个计数器,每10秒显示一次通知。我使用了thread,所以当我关闭我的应用程序时,服务会在后台运行 问题-一切正常,但当我启动计数器后立即按下“后退”按钮时,单击按钮。我的应用程序崩溃了。谁能告诉我有什么问题吗?谢谢 public class MyService extends Service { private static final int NOTIFICATION_ID = 5453; String s;

我正在开发一个简单的服务应用程序,它每1秒递增一个计数器,每10秒显示一次通知。我使用了thread,所以当我关闭我的应用程序时,服务会在后台运行

问题-一切正常,但当我启动计数器后立即按下“后退”按钮时,单击按钮。我的应用程序崩溃了。谁能告诉我有什么问题吗?谢谢

public class MyService extends Service {
        private static final int NOTIFICATION_ID = 5453;
        String s;
        boolean flag=true;
        int cooo;
        int m;
        int n=0;

       private void triggerNotification(final int text){   //Notification Triggering Function
                Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_noti);
                Intent intent = new Intent(this, ServiceActivity.class);
                TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
                stackBuilder.addParentStack(ServiceActivity.class);   // Creates a virtual stack so that when back key is pressed main activity will be displayed
                stackBuilder.addNextIntent(intent);
                PendingIntent pendingIntent =
                        stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT
                        );
                Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
                CharSequence tickerText="Current Counter Value :"+text;
                Notification notification = new Notification.Builder(this)
                        .setLargeIcon(bm)
                        .setSmallIcon(R.drawable.ic_action_noti)             // Setting Notification Icon
                        .setContentTitle(getString(R.string.notification))                // Setting Title of Notification
                        .setAutoCancel(true)                               // Makes this notification automatically dismissed when the user touches it
                        .setPriority(Notification.PRIORITY_MAX)           // Setting priority to Max
                        .setContentIntent(pendingIntent)
                        .setContentText(tickerText)
                        .setLights(0xFF0000FF, 100,3000)
                        .setSound(soundUri)
                        .build();

                notification.defaults |= Notification.DEFAULT_VIBRATE;
                notification.defaults |= Notification.DEFAULT_SOUND;

                NotificationManager notificationManager =                        //Notification Manager
                        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                notificationManager.notify(NOTIFICATION_ID, notification);
                // Log.d(TAG, "Notification sent successfully.");

            }
        @Nullable
        @Override


        public IBinder onBind(Intent intent) {
            return null;
        } //Default function of service class

        public int onStartCommand(Intent intent, int flags, int startID){ //Function recieving intent from startService

            cooo=intent.getIntExtra("cont", 0);
            s=Integer.toString(cooo);
            Thread thread=new Thread(new Runnable() {
                @Override
                public void run() { //Thread Initialized
                    while(flag){
                       try{ Log.d("The counter value is:", s + " ");
                        m=Integer.parseInt(s);
                        m++;
                           n++;
                        s=Integer.toString(m);

                           if(n%10==0){
                               Log.d("Notification Triggered", "Congrats!");
                               triggerNotification(m);
                           }

                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                    }
                }
            });
            thread.start(); //Thread Started
            return super.onStartCommand(intent,flags,startID); //sending intent again
        }

        public void onDestroy(){ //function call on stop button pressed
            super.onDestroy();
            flag=false;
            Log.d("Notification Triggered","on stop Button");
            triggerNotification(m);
            //Toast.makeText(getApplicationContext(),"stopped",Toast.LENGTH_LONG).show();
        }
    }
错误日志-

04-06 23:06:11.450 16940-16940/headfirst.com.serviceapplication E/AndroidRuntime:致命异常:主 java.lang.RuntimeException:无法启动服务 headfirst.com.serviceapplication。MyService@427724e8如果为空: java.lang.NullPointerException 在 android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2850) 在android.app.ActivityThread.access$2000(ActivityThread.java:159) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1419) 位于android.os.Handler.dispatchMessage(Handler.java:99) 位于android.os.Looper.loop(Looper.java:176) 位于android.app.ActivityThread.main(ActivityThread.java:5419) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 在dalvik.system.NativeStart.main(本机方法) 原因:java.lang.NullPointerException 在 headfirst.com.serviceapplication.MyService.onStartCommand(MyService.java:72) 在 android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2833) 在android.app.ActivityThread.access$2000(ActivityThread.java:159) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1419) 位于android.os.Handler.dispatchMessage(Handler.java:99) 位于android.os.Looper.loop(Looper.java:176) 位于android.app.ActivityThread.main(ActivityThread.java:5419) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 在dalvik.system.NativeStart.main(本机方法)


请粘贴崩溃日志。您是否在清单文件中声明了您的服务@codingrocks@KiranKumar是的,我已经在那里定义了我的服务类。问题是,如果我立即按下手机上的“后退”按钮并关闭应用程序,线程将在几秒钟后停止,否则它将正常工作。有人能帮我吗?请粘贴启动服务的代码。请粘贴崩溃日志。您是否在清单文件中声明了您的服务@codingrocks@KiranKumar是的,我已经在那里定义了我的服务类。问题是,如果我立即按下手机上的“后退”按钮并关闭应用程序,线程将在几秒钟后停止,否则运行正常。有人能帮我吗?请将代码粘贴到启动服务的位置。