رفتن به مطلب
برای استفاده از انجمن و عضـویت کلیک کنید.

AnswerCenter

مرکز پاسخگویی به سوالات برنامه نویسی

  • مرجع پاسخگویی
  • تولید آموزش
  • سفارش پروژه

درخواست سفارش پروژه

اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

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


  • 0
MrNet

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

سوال

MrNet    2

کاربر عادی

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

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

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

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

  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 پاسخ به این سوال تا کنون داده شده است

پست های پیشنهاد شده

  • 0
محمدرضا شاهپیری    3,671

معاون انجمن

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

  • تشکر 1

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
MrNet    2

کاربر عادی

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

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

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

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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • جدید...