رفتن به مطلب
  • 0

از کار نیوفتادن تکرار هنگام قفل شدن صفحه


MrNet

سوال

سلام دوستان.من یه اپ درست کردم که نیاز دارم جی پی اس گوشی و بصورت آنلاین بفرستم.این کار وقتی صفحه گوشی قفل میشه انجام نمی پذیره و دیگه چرخه تکرار من کار نمیکنه .

خیلی جستجو کردم ولی نتیجه ای نگرفتم :(

اینا در نهایت چند دقیقه بعد از به خواب رفتن گوشی ، فعالیت مورد نظر و تکرار میکنه

ازین استفاده میکنم برای تکرار:

  new Timer().scheduleAtFixedRate(new TimerTask() {
                        @Override
                        public void run() {
                            new Handler(Looper.getMainLooper()).post(new Runnable() {
                                @Override
                                public void run() {
                                    if (gpsFlag)
                                    {
                                        getMyLocation();
                                        if (lastlang!=0d){
                                            time = myclass.get_time();

                                            if (myclass.check_net(MainActivity.this)) {
                                                if (checkDistanc(lastlat,lastlang)) {
                                                    gpsFlag = false;
                                                    sendGps sendgps = new sendGps();
                                                    sendgps.execute("");

                                                }

                                            } else
                                            {
                                                if (checkDistanc(lastlat,lastlang)) {

                                                    sendOfflineGps();
                                                    lastlang = Double.valueOf(lang);
                                                    lastlat = Double.valueOf(lat);
                                                }
                                            }



                                        }

                                    }


                                }
                            });
                        }
                    }, 0, timesend*1000);

واسه بیدار موندن صفحه هم علاوه بر  manifest اینارو گذاشتم:

 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNjfdhotDimScreen");

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            Intent intent = new Intent();
            String packageName = getPackageName();
            if (!pm.isIgnoringBatteryOptimizations(packageName)) {
                intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                intent.setData(Uri.parse("package:" + packageName));
                startActivity(intent);
            }
        }

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

   @Override
    protected void onPause() {
        super.onPause();
         wl.release();
    }//End of onPause

    @Override
    protected void onResume() {
        super.onResume();
        wl.acquire();
    }//

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

2 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در در 21 مرداد 1398 در 10:27، محمدرضا شاهپیری گفته است :

سلام و درود. دوست عزیزTimer بیشتر برای کارهای سطح پایین و غالبا تو اکتیویتی استفاده میشه. برای کاری که شما میخواین بکنید باید از AlarmManager استفاده کنید. آموزش توی سایت هست

استفاده کردم ولی کمتر از یک ساعت نمیشد تایم داد بهش برای تکرار

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام و درود. دوست عزیزTimer بیشتر برای کارهای سطح پایین و غالبا تو اکتیویتی استفاده میشه. برای کاری که شما میخواین بکنید باید از AlarmManager استفاده کنید. آموزش توی سایت هست

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...