2017-04-03 9 views
1

내 앱에서 사용자가 요청을 게시 할 때 마감일을 설정해야합니다. 따라서 마감 기한이 만료되면 앱이 자동으로 해당 요청을 삭제하기를 원합니다. 나는 아무 것도 시도하지 않았지만 내가 필요로하는 것과 비슷한 것을 찾을 수 없다. 사용자의 게시물 요청이 일반적으로마감일이 만료되면 백그라운드 서비스에서 firebase 하위를 삭제하는 방법은 무엇입니까?

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

답변

0

데이터베이스가 독자적으로 같은 시간 기반 기능을 구현 할 수없는 경우

나는 적어도 코드를 보여 드리겠습니다.

  1. 요청의 마감일 목록을로드하고 자신의 마감 기한을 요청을 삭제하는 서버의 유지 보수 응용 프로그램을 실행

    당신은 행동의 두 가지 코스가있다. 예를 들어 1 년 24 시간 내내이 루프를 실행하지만 매 초마다 마감 시간을 확인하지 않습니다 - 삽입, 삭제 및 업데이트에 반응하여 목록을 관리합니다 (firebase에 대한 연결을 열어 둘 수 있습니다. 심판을 관찰하면 변경 될 때 알려줍니다).

  2. 추가 기한을 확인/수정하여 마감 기한이 지난 항목을 무시하십시오. 예를 들어 하루에 한 번씩 이러한 항목을 삭제하는 관리 작업을 실행하십시오.

+0

# 1은 후자보다 쉽습니다. 하지만 어떻게 코딩해야할지 모르겠다. – exc3m