رفتن به مطلب

استفاده حرفه ای از اکتیویتی و سرویس در بیسیک(انتقال مقادیر به صورت استاندارد بین کامپوننتها)


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

سلام عرض میکنم خدمت همه دوستان امیدوارم حالتون خوب باشه

 

یه آموزش ساده ولی فوقلااااده کاربردی و مهم رو خدمتتون ارائه میکنیم (تقریبا میشه گفت ویژه اس:gamer2:)

ببینید دوستان توی جاوا ما خیلی کارا میتونیم بکنیم یکیشون مثلا نحوه استارت کردن اکتیویتی هست که به شکل زیره

startActivity(new Intent(this,folanactivity.Class).PutExtra("key","value"))

همونجوری که میبینید علاوه بر استارت کردن اکتیوتی یه مقدار رو هم همراهش به اون اکتیویتی فرستاده که توی اکتیویتی بعدی با یک bundle به راحتی این مقدار رو میگیره

حالا این کار چجوری توی بیسیک امکان پذیره؟؟؟:unknown: نگران نباشید چاره این مشکل دست خودمه فقطط:gamer:

به شکل زیره خیلی ساده

فرض کنیم پکیج برنامه باشه packagename و اسم اکتیویتی که میخوایم استارت کنیم باشه مثلا ShahabShahpiriAct  به صورت زیر اکتیویتی رو استارت میزنیم و یه مقدار هم بهش میفرستیم

Dim Intent1 As Intent
Intent1.Initialize("", "")
Intent1.SetComponent("packagename/.ShahabShahpiriAct")
Intent1.PutExtra("key", "value")
StartActivity(Intent1)

فهمیدین چی شد که؟ اول پکیج بعد یه اسلش و یه نقطه بعدشم اسم اکتیویتی حالا میبینید که به طرز معجزه آسایی اکتیویتی استارت میشه حالا میریم به اکتیویتی و مقداری که فرستادیم رو میگیریم

dim intent2 as Intent=Activity.GetStartingIntent 
intent2.GetExtra("key")        با این دستور میبینید که مقداری که از اکتیویتی قبل فرستادین اینجا گرفتین

دوستان دقت کنید این موضوع برای سرویس هم همین جوری فقط به جای startactivity شما باید بنویسید startservice

امید وارم از این آموزش استفاده مفید ببرید

یا حق:heart:

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

استاد شاهپیری عزیز

 

من راستش متوجه نشدم به چه درد میخوره این روش

میشه یه مثال بزنید ؟

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

در 51 دقیقه قبل، حمید زارع گفته است :

من راستش متوجه نشدم به چه درد میخوره این روش

به دردهای زیادی میخوره.:DD:

یکی از مواردش اینه که مثلا یه رسیور داریم(مثل پوش) ، وقتی اطلاعات دریافت میشن خب سرویس ما استارت میشه، همون لحظه میخوایم یه اکتیویتی استارت کنیم و اطلاعاتِ توی سرویس رو اونجا نمایش بدیم.

میایم بجای اینکه متغیر توی Proccess_Gloubal تعریف کنیم مستقیماً مقادیر رو میدیم به Intent ای که قراره واسمون کلاس مورد نظر رو استارت کنه. و ازاونور هم اون مقادیر رو میگیریم.

 

مثلا سرویس های پوش ناتیفیکیشن مثل توسعه یار، پوشه و...

زمانی که پوش دریافت میشه اونها توی یه کلاسی دریافتش میکنن و دقیقا با همین روش با دادن مقادیر به اینتنت موردنظر سرویس رو استارت میکنن و شما هم اون مقادیر دریافت شده بهره مند میشید.

 

درکل کارش همون انتقال مقادیر بین سرویس، اکتیویتی.... و... هست(بجای تعریف متغیر در Proccess_Goubal) - اما کمی متفاوت و بهینه تر

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

  • 3 هفته بعد...

چطور می شود که بعد از کلیک بر روی نوتیفکشن اکتویتی باز گردد.الان به محض باز شدن سرویس و نوتیفکشن اکتیوتی باز می شود.

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

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

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

لطفا سوالتون رو واضح بپرسید و اگه به این تاپیک مربوط نمیشه یه تاپیک جداگونه بزنید.

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

  • 1 سال بعد...

سلام مهندس شاهپیری

من یه سرویس ماژول دارم که تاریخ شمسی رو برمی گردونه.

حالا می خوام تاریخ شمسی رو از سرویس ماژول توی یه اکتیویتی(مثلاmain) نمایش بدم.

کدهایی که نوشتین رو وارد کردم ولی شما توضیح ندادین که کجای اکتیویتی می تونیم نمایشش بدیم.

مقداری که از سرویس ماژول گرفتیم رو چطوری تو لیبل در اکتیویتی main نمایش بدیم؟

ممنون و متشکر

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

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

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

در 21 ساعت قبل، محمدرضا شاهپیری گفته است :

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

من مبتدی هستم و این کد سوریس ماژولم هست . میخوام تو لیبل در اکتیویتی main تاریخ شمسی رو نشون بدم. کدش چیه؟ ممنون

 

Sub Process_Globals

Dim sNotif As Notification
Dim sd As String

End Sub
Sub Service_Create
sNotif.Initialize
sNotif.Icon = "icon"
sd = getDate
sNotif.SetInfo("تاریخ امروز",sd,Main)
sNotif.Sound = False
sNotif.Notify(1)
Service.StartForeground(1,sNotif)
End Sub


Sub getDate As String  'کد تبدیل ماه های میلادی به شمسی
Dim d1 As PersianDate
Dim s1(),month,Day As String
s1 = Regex.Split("/",d1.getDate(0,0,0,"/"))
Dim now As String 
now = DateTime.GetDayOfWeek(DateTime.now)
Select now
		Case "1"
			Day="یکشنبه"
		Case "2"
			Day="دوشنبه"
		Case "3"
			Day="سه شنبه"
		Case "4"
			Day="چهار شنبه"
		Case "5"
			Day="پنج شنبه"
		Case "6"
			Day="جمعه"
		Case "7"
			Day="شنبه"
	End Select
Select Case s1(1)
 Case 1
  month = "فروردین"
 Case 2
  month = "اردیبهشت"
 Case 3
  month = "خرداد"
 Case 4
  month = "تیر"
 Case 5
  month = "مرداد"
 Case 6
  month = "شهریور"
 Case 7
  month = "مهر"
 Case 8
  month = "آبان"
 Case 9
  month = "آذر"
 Case 10
  month = "دی"
 Case 11
  month = "بهمن"
 Case 12
  month = "اسفند"
End Select
Return " امروز " & Day & "" & ConvertNumbers2Persian(s1(2))  & " " & month & " " & ConvertNumbers2Persian(s1(0))
End Sub

Sub ConvertNumbers2Persian(sNumber As String) As String  'اینم کد تبدیل اعداد به فارسی
Dim sNumbers(10) As String
Dim res As String
Dim j As Int
res = sNumber
sNumbers(0) = "٠"
sNumbers(1) = "١"
sNumbers(2) = "٢"
sNumbers(3) = "٣"
sNumbers(4) = "٤"
sNumbers(5) = "٥"
sNumbers(6) = "٦"
sNumbers(7) = "٧"
sNumbers(8) = "٨"
sNumbers(9) = "٩"
For i =0 To sNumber.Length - 1
 j = sNumber.SubString2(i,i+1)
 res = res.Replace(sNumber.CharAt(i),sNumbers(j))
Next
Return res
End Sub

 

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

بایگانی شده

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

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

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