این ارسال پرطرفدار است. محمدرضا شاهپیری 5,582 ارسال شده در 26 بهمن، ۱۳۹۷ این ارسال پرطرفدار است. اشتراک گذاری ارسال شده در 26 بهمن، ۱۳۹۷ مشاهده فایل کتابخانه بسیار کاربردی PersianTimer با سلام خدمت دوستان عزیز امیدوارم که حالتون خوب باشه و کدهاتون بی ارور با یک کتابخونه بسیار کاربردی و واجب در خدمتتون هستم. کتابخونه timer خود بیسیک واقعا ضعیف و بدون امکانات هست. و گزارشهایی هم شده که کتابخونه به درستی کار نمیکنه. تو این کتابخونه به جای خود تایمر اندروید و یا handler اومدیم و از scheduledexecutorservice که از خانواده قدرتمند ThreadPoolExecutor هست استفاده کردیم. یکی از مزیت های بسیار خوب این کتابخونه این هست که به راحتی میتونید بینهایت کار رو به صورت همزمان توی نخهای متفاوت بدون هیچ گونه تداخلی انجام بدین.این کار به وسیله Future ها انجام میشه و توی کتابخونه به وسیله tag تایمرها از هم متمایز میشن. امیدوارم که از کتابخونه واقعا کاربردی بهترین استفاده رو بکنید. لینک آموزش و سورس کتابخونه واما نحوه استفاده از کتابخونه. ابتدا کتابخونه رو تیک بزنید و اونو اینشیالایز کنید Dim prt As PersianTimer prt.Initialize("prt") توی این کتابخونه سه تا متد اصلی هست. متد اول متد schedule هست. این متد کارش اینه که یک کار مشخص رو بعد از یک تایم مشخص انجام میده. در واقع تایمر رو برای تایم مشخص ست میکنه. مثال. prt.schedule("schedule",prt.TimeUnit_SECONDS,10) Private Sub prt_onTick(Tag As String,TimeUntil As Int) بعد از 10 ثانیه این متد اجرا میشه End Select متد دوم scheduleAtFixedRate هست. این متد تایمر رو با یک وقفه مشخص برای یک دوره زمانی متناوب ست میکنه. مثال. prt.scheduleAtFixedRate("scheduleAtFixedRate",prt.TimeUnit_SECONDS,3,1) ' یعنی اینکه بعد از 3 ثانیه هر یک ثانیه تیک بخور تا زمانی که اونو کنسل نکنید به همین صورت هر یک ثانیه یک بار متد زیر اجرا میشه Private Sub prt_onTick(Tag As String,TimeUntil As Int) این متد هر یک ثانیه اجرا میشه End Select متد سوم متد scheduleCountDown هست. این متد یک تایمر معکوس با تایم مشخص و دوره تیک مشخص ایجاد میکنه. مثال prt.scheduleCountDown("scheduleCountDown1",prt.TimeUnit_SECONDS,30,1) ' یعنی اینکه از 30 شروع کن و تا صفر یک ثانیه یک ثانیه بیا Private Sub prt_onTick(Tag As String,TimeUntil As Int) Log("Tick : "&Tag&" TimeUntil : "&TimeUntil) ' TimeUntil مقدار زمان باقیمانده تا صفر هست به ثانیه End Select End Sub بعد از 30 ثانیه تایمر تموم میشه و متد زیر اجرا میشه Private Sub prt_onFinish(Tag As String) Log("Finish : "&Tag) End Sub ارسال کننده محمدرضا شاهپیری ارسال جمعه, 26 بهمن 1397 دسته کتابخانه ها 8 3 نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,582 ارسال شده در 27 بهمن، ۱۳۹۷ سازنده اشتراک گذاری ارسال شده در 27 بهمن، ۱۳۹۷ در 15 دقیقه قبل، basic 4 android گفته است : ببخشید این متد کنسل داره cancelTask متد استارت از همون ثانیه کنسل شده هم داره ؟ ممنون خیر عزیز. انشالا تو نسخه بعد اضافه میکنم. 1 نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
mohammad3250 206 ارسال شده در 4 فروردین، ۱۳۹۹ اشتراک گذاری ارسال شده در 4 فروردین، ۱۳۹۹ سلام من میخوام مثلا با دقیقه از تایممر استفاده کنم ولی قاطی میکنه راهنمایی میکنی استاد ؟ نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,582 ارسال شده در 4 فروردین، ۱۳۹۹ سازنده اشتراک گذاری ارسال شده در 4 فروردین، ۱۳۹۹ در 10 ساعت قبل، mohammad3250 گفته است : سلام من میخوام مثلا با دقیقه از تایممر استفاده کنم ولی قاطی میکنه راهنمایی میکنی استاد ؟ دقیقا چیکار میخواین بکنین شما؟ 1 نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
mohammad3250 206 ارسال شده در 4 فروردین، ۱۳۹۹ اشتراک گذاری ارسال شده در 4 فروردین، ۱۳۹۹ در 10 ساعت قبل، محمدرضا شاهپیری گفته است : دقیقا چیکار میخواین بکنین شما؟ الان وقتی زمان به ثانیه میدم درست هستش ولی وقتی به دقیقه میدم قاطی میکنه مثلا 7 دقیقه میدی میشه -51 اینجوری نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
mahdi tahan 723 ارسال شده در 17 اردیبهشت، ۱۳۹۹ اشتراک گذاری ارسال شده در 17 اردیبهشت، ۱۳۹۹ با سلام استاد وقتی از متد prtt.scheduleAtFixedRate("app",prtt.TimeUnit_MILLISECONDS,1200,1100) استفاده میکنیم در صورتی ک تایمر رو کنسل کنیم یا shot down کنیم و دوباره اجرا کنیم سرعت تیک انگار دوبرابر میشه و این عمل هر بار تکرار بشه باز سرعت افزایش پیدا میکنه نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ali mo 264 ارسال شده در 17 اردیبهشت، ۱۳۹۹ اشتراک گذاری ارسال شده در 17 اردیبهشت، ۱۳۹۹ سلام وقت بخیر متغییر prtt یا همون تعریف متغیر اولیه کلاس رو داخل ساب Process_Globals تعریف کنید شاید درست بشه(مقدار ست رو نه) نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
programingcenter97. 4 ارسال شده در 2 تیر، ۱۳۹۹ اشتراک گذاری ارسال شده در 2 تیر، ۱۳۹۹ سلام وقت بخیر خیلی ممنونم از کتابخونه پرکاربرد و رایگانتون سوالی برام پیش اومده من یک مشکلی که دارم با تایمر بیسیک اینکه وقتی اکتیوتی Pause میشه تایمر متوقف میشه و این خیلی بده من میخوام در هر شرایط ممکن تایمر کار کنه و ساب هم کار کنه و کد های مربوطه بدون هیچ ایرادی اجرا بشه این امکان تو کتابخونه شما امکان پذیر هست؟ و اینکه یک مورد دیگه هم هست چون بخش حیاتی هست نمیخوام با عقب جلو کردن ساعت گوشی خللی در تایمر اتفاق بیفته؟ نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,582 ارسال شده در 4 تیر، ۱۳۹۹ سازنده اشتراک گذاری ارسال شده در 4 تیر، ۱۳۹۹ در در 2 تیر 1399 در 20:33، programingcenter97. گفته است : سلام وقت بخیر خیلی ممنونم از کتابخونه پرکاربرد و رایگانتون سوالی برام پیش اومده من یک مشکلی که دارم با تایمر بیسیک اینکه وقتی اکتیوتی Pause میشه تایمر متوقف میشه و این خیلی بده من میخوام در هر شرایط ممکن تایمر کار کنه و ساب هم کار کنه و کد های مربوطه بدون هیچ ایرادی اجرا بشه این امکان تو کتابخونه شما امکان پذیر هست؟ و اینکه یک مورد دیگه هم هست چون بخش حیاتی هست نمیخوام با عقب جلو کردن ساعت گوشی خللی در تایمر اتفاق بیفته؟ سلام خدمت شما. کتابخونه مشکلی نداره دوست عزیز و تو هر شرایطی اجرا میشه ولی زمانی که شما کتابخونه رو توی اکتیوتی اینشیالایز میکنید ایونتها فقط زمانی اجرا میشه که اکتیوتی تو حالت resum باشه در غیر این صورت نادیده گرفته میشه.توی لاگ هم مشخصه. برای اینکه مطمئن شید درست اجرا میشه از سرویس استفاده کنید و کتابخونه رو اونجا اینشیالایز کنید نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
programingcenter97. 4 ارسال شده در 4 تیر، ۱۳۹۹ اشتراک گذاری ارسال شده در 4 تیر، ۱۳۹۹ در 10 ساعت قبل، محمدرضا شاهپیری گفته است : سلام خدمت شما. کتابخونه مشکلی نداره دوست عزیز و تو هر شرایطی اجرا میشه ولی زمانی که شما کتابخونه رو توی اکتیوتی اینشیالایز میکنید ایونتها فقط زمانی اجرا میشه که اکتیوتی تو حالت resum باشه در غیر این صورت نادیده گرفته میشه.توی لاگ هم مشخصه. برای اینکه مطمئن شید درست اجرا میشه از سرویس استفاده کنید و کتابخونه رو اونجا اینشیالایز کنید سلام وقتتون بخیر میشه در آپدیت های جدید این خاصیت رو بزارید؟ چون من هم همین فکر رو کردم و اومدم برای تایمر از سرویس استفاده کردم اما درست و حسابی کار نمیکرد میشه در کتابخونتون انشالله این قابلیت رو اضافه کنید تا مشخص کنیم بعد از ریزام نبودن هم کار کنه؟ نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,582 ارسال شده در 4 تیر، ۱۳۹۹ سازنده اشتراک گذاری ارسال شده در 4 تیر، ۱۳۹۹ در 5 ساعت قبل، programingcenter97. گفته است : سلام وقتتون بخیر میشه در آپدیت های جدید این خاصیت رو بزارید؟ چون من هم همین فکر رو کردم و اومدم برای تایمر از سرویس استفاده کردم اما درست و حسابی کار نمیکرد میشه در کتابخونتون انشالله این قابلیت رو اضافه کنید تا مشخص کنیم بعد از ریزام نبودن هم کار کنه؟ کتابخونه آپدیت شد و مشکل مرتفع شد. نسخه جدید رو دریافت کنید. 1 نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,582 ارسال شده در 4 تیر، ۱۳۹۹ سازنده اشتراک گذاری ارسال شده در 4 تیر، ۱۳۹۹ در در 17 اردیبهشت 1399 در 13:46، mahdi tahan گفته است : با سلام استاد وقتی از متد prtt.scheduleAtFixedRate("app",prtt.TimeUnit_MILLISECONDS,1200,1100) استفاده میکنیم در صورتی ک تایمر رو کنسل کنیم یا shot down کنیم و دوباره اجرا کنیم سرعت تیک انگار دوبرابر میشه و این عمل هر بار تکرار بشه باز سرعت افزایش پیدا میکنه در در 4 فروردین 1399 در 23:37، mohammad3250 گفته است : الان وقتی زمان به ثانیه میدم درست هستش ولی وقتی به دقیقه میدم قاطی میکنه مثلا 7 دقیقه میدی میشه -51 اینجوری مشکل رفع شد. نسخه جدید رو دریافت کنید 1 نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
programingcenter97. 4 ارسال شده در 4 تیر، ۱۳۹۹ اشتراک گذاری ارسال شده در 4 تیر، ۱۳۹۹ آقا خیلی گلی دستت طلا فقط یه سوال میشه مثل تایمر enabled رو هعی false و true کرد؟ که تایمر استوپ بشه و دوباره راه اندازی بشه؟ نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,582 ارسال شده در 4 تیر، ۱۳۹۹ سازنده اشتراک گذاری ارسال شده در 4 تیر، ۱۳۹۹ در 39 دقیقه قبل، programingcenter97. گفته است : آقا خیلی گلی دستت طلا فقط یه سوال میشه مثل تایمر enabled رو هعی false و true کرد؟ که تایمر استوپ بشه و دوباره راه اندازی بله دوست عزیز متد کنسل هست که باید تگ تایمر رو بهش بدین و اونو کنسل کنید. نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
programingcenter97. 4 ارسال شده در 4 تیر، ۱۳۹۹ اشتراک گذاری ارسال شده در 4 تیر، ۱۳۹۹ در 54 دقیقه قبل، محمدرضا شاهپیری گفته است : بله دوست عزیز متد کنسل هست که باید تگ تایمر رو بهش بدین و اونو کنسل کنید. آها دیدم فقط برای اجرای دوباره باید کدوم دستور رو بزنم؟ نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,582 ارسال شده در 5 تیر، ۱۳۹۹ سازنده اشتراک گذاری ارسال شده در 5 تیر، ۱۳۹۹ در 13 ساعت قبل، programingcenter97. گفته است : آها دیدم فقط برای اجرای دوباره باید کدوم دستور رو بزنم؟ وقتی متد کنسل رو میزنید باید دوباره متدهای schedule یا scheduleAtFixedRate یا scheduleCountDown رو صدا بزنید تا تایمر مجدد راه اندازی بشه. دقت داشته باشین که تایمر دوباره از صفر شروع میشه نه ادامه فرایند قبل نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
programingcenter97. 4 ارسال شده در 7 تیر، ۱۳۹۹ اشتراک گذاری ارسال شده در 7 تیر، ۱۳۹۹ در در 5 تیر 1399 در 11:47، محمدرضا شاهپیری گفته است : وقتی متد کنسل رو میزنید باید دوباره متدهای schedule یا scheduleAtFixedRate یا scheduleCountDown رو صدا بزنید تا تایمر مجدد راه اندازی بشه. دقت داشته باشین که تایمر دوباره از صفر شروع میشه نه ادامه فرایند قبل یه سوال داشتم من چون دارم تایمر رو که داره هر ثانیه کم میشه رو به کار نشون میدم Private Sub timer_onTick(Tag As String,TimeUntil As Int) Time_Finish = TimeUntil Dim seconds, minutes As Int seconds = Time_Finish minutes = Floor(seconds / 60) seconds = seconds Mod 60 Try If Time_Finish < 10 And Time_Finish > 3 Then LBL_Timer.TextColor = Colors.Red End If LBL_Timer.Text = NumberFormat(minutes, 2, 0) & ":" & NumberFormat(seconds,2,0) Catch Log(LastException) End Try End Sub حالا وقتی از اکتیوتی خاج میشه برنامه فرس کلوز میده! میشه توی تایمر تیک مقدار اکتیوتی باز هست یا نه رو برگردونه تا با گذاشتن یک شرط که اگر اکتیوتی باز بود بیاد تایمر رو در لیبل نمایش بده در غیر این صورت چون کرش میکنه نشون نده خطاشم اینه java.lang.NullPointerException: Attempt to read from field 'anywheresoftware.b4a.BA ir.ziamath.programingcenter.m_start_azmoon.activityBA' on a null object reference at ir.ziamath.programingcenter.m_start_azmoon._timer_ontick(m_start_azmoon.java:2998) at java.lang.reflect.Method.invoke(Native Method) at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732) at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348) at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255) at java.lang.reflect.Method.invoke(Native Method) at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144) at anywheresoftware.b4a.ShellBA$1.run(ShellBA.java:77) at android.os.Handler.handleCallback(Handler.java:742) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5601) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) Error occurred on line: 228 (M_Start_Azmoon) java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference at anywheresoftware.b4a.shell.Shell.runGoodChain(Shell.java:479) at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:293) at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255) at java.lang.reflect.Method.invoke(Native Method) at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144) at anywheresoftware.b4a.ShellBA$1.run(ShellBA.java:77) at android.os.Handler.handleCallback(Handler.java:742) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5601) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
vistamobile 1,700 ارسال شده در 8 تیر، ۱۳۹۹ اشتراک گذاری ارسال شده در 8 تیر، ۱۳۹۹ سلام . برای من کلا شروع نمیشه. وقتی ساب زیر رو هم اضافه میکنم برنامه متوقف میشه : 'Private Sub prt_onFinish(Tag As String) ' Log("Finish : "&Tag) 'End Sub اینم لاگ ارور : *** Service (starter) Create *** ** Service (starter) Start ** ** Activity (main) Create, isFirst = true ** ** Activity (main) Resume ** Tick : scheduleCountDown1 TimeUntil : 30 main_prt_ontick (java line: 434) android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6024) at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:853) at android.view.ViewGroup.invalidateChild(ViewGroup.java:4320) at android.view.View.invalidate(View.java:10935) at android.view.View.invalidate(View.java:10890) at android.widget.TextView.checkForRelayout(TextView.java:6579) at android.widget.TextView.setText(TextView.java:3813) at android.widget.TextView.setText(TextView.java:3671) at android.widget.TextView.setText(TextView.java:3646) at anywheresoftware.b4a.objects.TextViewWrapper.setText(TextViewWrapper.java:39) at b4a.example.main._prt_ontick(main.java:434) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:196) at com.persian.timer.PersianTimer.Run(PersianTimer.java:72) at com.persian.timer.PersianTimer.access$000(PersianTimer.java:23) at com.persian.timer.PersianTimer$3.run(PersianTimer.java:133) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:279) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:152) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,582 ارسال شده در 9 تیر، ۱۳۹۹ سازنده اشتراک گذاری ارسال شده در 9 تیر، ۱۳۹۹ در 2 ساعت قبل، vistamobile گفته است : سلام . برای من کلا شروع نمیشه. وقتی ساب زیر رو هم اضافه میکنم برنامه متوقف میشه : اینم لاگ ارور : متدها توی ترد اصلی اجرا میشه و نباید موردی باشه. سورس رو بزار ببینم چیکار کردی 1 نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
vistamobile 1,700 ارسال شده در 9 تیر، ۱۳۹۹ اشتراک گذاری ارسال شده در 9 تیر، ۱۳۹۹ در 9 ساعت قبل، محمدرضا شاهپیری گفته است : متدها توی ترد اصلی اجرا میشه و نباید موردی باشه. سورس رو بزار ببینم چیکار کردی بیا داداش . یه نگاهی بهش بکن : New folder (2).rar نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: strong> مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.