Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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
Android 截止日期到期时,如何从后台服务中删除firebase子项?_Android_Firebase_Firebase Realtime Database_Deadlines - Fatal编程技术网

Android 截止日期到期时,如何从后台服务中删除firebase子项?

Android 截止日期到期时,如何从后台服务中删除firebase子项?,android,firebase,firebase-realtime-database,deadlines,Android,Firebase,Firebase Realtime Database,Deadlines,在我的应用程序中,当用户发布请求时,他还需要设置截止日期。因此,当截止日期到期时,我希望应用程序自动删除该请求。我还没有尝试过任何东西,因为我找不到与我需要的相似的东西 我至少会在用户发布请求时显示代码 post = (Button) myView.findViewById(R.id.post); post.setOnClickListener(new View.OnClickListener() { @Override publi

在我的应用程序中,当用户发布请求时,他还需要设置截止日期。因此,当截止日期到期时,我希望应用程序自动删除该请求。我还没有尝试过任何东西,因为我找不到与我需要的相似的东西

我至少会在用户发布请求时显示代码

post = (Button) myView.findViewById(R.id.post);
        post.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if (ContextCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(),android.Manifest.permission.ACCESS_COARSE_LOCATION)) {
                        ActivityCompat.requestPermissions(getActivity(), new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSION_REQUEST_LOCATION);
                    }
                    else {
                        ActivityCompat.requestPermissions(getActivity(), new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSION_REQUEST_LOCATION);
                    }
                }
                else {
                    LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
                    Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    try {
                        uloc = hereLocation(location.getLatitude(), location.getLongitude());
                    }
                    catch (Exception e) {
                        e.printStackTrace();
                        //Toast.makeText(getActivity(), "NOT FOUND", Toast.LENGTH_SHORT).show();
                    }

                }
                dead = deadline.getText().toString();
                r = reqdesc.getText().toString();

                if(reqdesc.getText().toString().trim().length()==0){
                    Toast.makeText(getActivity(), "PLEASE ENTER YOUR REQUEST", Toast.LENGTH_LONG).show();
                }
                else if(click==0 || dl==null){
                    Toast.makeText(getActivity(), "PLEASE SET THE DEADLINE FOR YOUR REQUEST", Toast.LENGTH_LONG).show();
                }
                else {
                    String date = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
                    writeNewRequest(r, dead, uemail, uid, uname, uprofile, uloc, date);
                    String reqKey = p.getKey().toString();
                    writeDuplicate(reqKey, r, dead, uemail, uid, uname, uprofile, uloc, date);
                    Intent i = new Intent(getActivity(), RequestConfirm.class);
                    i.putExtra("key", reqKey);
                    startActivity(i);
                    //showNotification();
                }
            }
        });

数据库通常无法单独实现这种基于时间的功能

您有两种可能的行动方案:

  • 在服务器上运行维护应用程序,该应用程序将加载包含请求截止日期的列表,并在截止日期到期时删除请求。例如,您可以在1秒时间内24/7运行此循环,但并不每秒检查数据库中的截止日期-您通过对插入、删除和更新作出反应来维护一个列表(您只需保持与firebase的连接处于打开状态,并观察一个ref,它会在更改时通知您)

  • 进行额外检查/修改查询以忽略超过截止日期的项目。例如,每天运行一次内务管理例程,删除这些项目


  • 数据库通常无法单独实现这种基于时间的功能

    您有两种可能的行动方案:

  • 在服务器上运行维护应用程序,该应用程序将加载包含请求截止日期的列表,并在截止日期到期时删除请求。例如,您可以在1秒时间内24/7运行此循环,但并不每秒检查数据库中的截止日期-您通过对插入、删除和更新作出反应来维护一个列表(您只需保持与firebase的连接处于打开状态,并观察一个ref,它会在更改时通知您)

  • 进行额外检查/修改查询以忽略超过截止日期的项目。例如,每天运行一次内务管理例程,删除这些项目


  • #1听起来比后者容易。但我不知道如何编码,1听起来比后者容易。但我不知道如何编写代码