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

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


aminmoghadas

سوال

سلام

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

اکتیویتی استارت میشه بخش Activity_Create اجرا میشه کلیه دستورات و درست هم اجرا میشه بعد میره بخش Activity_Resume هم اجرا میشه که هیچ کدی توش نیست اما دوباره برمیگرده به بخش Activity_Create و یک بار دیگه اون قسمت اجرا میشه

اگر امکان داره راهنمایی بفرمایید ممنون میشم

این هم فیلم اتفاقی که میوفته

http://khosh-khati.ir/2018-11-29_12-28-41.mp4

سورس همین اکتیویتی هم میزارم پایین

#Region  Activity Attributes 
	#FullScreen: True
	#IncludeTitle: False
#End Region

Sub Process_Globals
End Sub

Sub Globals
	Dim prdl As Persian_Simple_Downloder
	Dim videop As VideoView
	Dim videoname As String =coursepass.videopass & ".mp4"
	Dim link As String ="http://testdomain.ir/khoshkhati/app/video/"&videoname
	Private Lbl1download As Label
	Private ProgressBar1 As ProgressBar
	Private Paneldownload As Panel
	Dim p As Phone
	Private lbldesc As Label
	Private dlbtn As Button
	Private playbtn As Button
	
End Sub

Sub Activity_Create(FirstTime As Boolean)
	p.SetScreenOrientation(0)
	Activity.LoadLayout("videoplay")
	Lbl1download.Gravity=Gravity.CENTER
	videop.Initialize("")
	If File.Exists(File.DirInternal,"khoshkhativideo")= False Then
		File.MakeDir(File.DirInternal,"khoshkhativideo")
	End If
	If File.Exists(File.DirInternal&"/khoshkhativideo",videoname)= False Then
		lbldesc.Visible=True
		lbldesc.Text="فایل درس مورد نظر شما هنوز دانلود نشده است. این فایل ابتدا یک بار باید بر روی دستگاه شما دریافت شود. در مراجعات بعدی دیگر نیازی به دانلود نیست. در صورتی که در حال حاضر قادر به دانلود این فایل هستید بر روی دکمه زیر کلیک کنید."
		dlbtn.Visible=True
	Else
		playervideo
		If videop.IsPlaying = False Then
			File.Delete(File.DirInternal,"/khoshkhativideo/"&videoname)
		End If
	End If
End Sub
Sub Wait(Sekunden As Int)
	Dim Ti As Long
	Ti = DateTime.Now + (Sekunden * 1000)
	Do While DateTime.Now < Ti
	Loop
End Sub
Sub playervideo
	Activity.RemoveAllViews
	Activity.AddView(videop,0,0,100%x,100%y)
	videop.LoadVideo(File.DirInternal,"/khoshkhativideo/"&videoname)
	videop.Play()
	videop.MediaControllerEnabled = True
	
End Sub
Sub prd_onDownLoading(progress As Int)
	Lbl1download.Text=progress&" % "
	ProgressBar1.Progress = progress
End Sub
Sub prd_onError(error As String)
	ToastMessageShow("خطا در دانلود فایل",True)
	Log(error)
End Sub
Sub prd_onFinish
	Wait(5)
	ToastMessageShow("دانلود با موفقیت به پایان رسید.",True)
	Paneldownload.Visible = False
	
	lbldesc.Visible=True
	lbldesc.Text="دانلود فایل انجام شد. میتوانید با دکمه پخش اقدام به مشاهده فیلم مورد نظر کنید."
	playbtn.Visible=True
End Sub
Sub cancel_Click
	prdl.cancelDownload
	Paneldownload.Visible = False
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
	coursepass.courseName=""
End Sub
Sub dlbtn_Click
	prdl.initialize("prd")
	lbldesc.Visible=False
	dlbtn.Visible=False
	Paneldownload.Visible = True
	prdl.download(link,File.DirInternal&"/khoshkhativideo",coursepass.videopass,"mp4")
End Sub
Sub playbtn_Click
	playervideo
	If videop.IsPlaying = False Then
		File.Delete(File.DirInternal,"/khoshkhativideo/"&videoname)
	End If
End Sub

 

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

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

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

سلام و درود دلیل اینکه چرا اکتیویتی دوبار به حالت create میره رو من نتونستم بفهمم از کدهاتون. ولی به شکل زیر میتونید اثرش رو خنثی کنید. جایگزین کد زیر رو

Sub Activity_Create(FirstTime As Boolean)

if FirstTime then
	p.SetScreenOrientation(0)
	Activity.LoadLayout("videoplay")
	Lbl1download.Gravity=Gravity.CENTER
	videop.Initialize("")
	If File.Exists(File.DirInternal,"khoshkhativideo")= False Then
		File.MakeDir(File.DirInternal,"khoshkhativideo")
	End If
	If File.Exists(File.DirInternal&"/khoshkhativideo",videoname)= False Then
		lbldesc.Visible=True
		lbldesc.Text="فایل درس مورد نظر شما هنوز دانلود نشده است. این فایل ابتدا یک بار باید بر روی دستگاه شما دریافت شود. در مراجعات بعدی دیگر نیازی به دانلود نیست. در صورتی که در حال حاضر قادر به دانلود این فایل هستید بر روی دکمه زیر کلیک کنید."
		dlbtn.Visible=True
	Else
		playervideo
		If videop.IsPlaying = False Then
			File.Delete(File.DirInternal,"/khoshkhativideo/"&videoname)
		End If
	End If
End If
End Sub

 

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

2 تا احتمال هست

  1. این خط رو حذف کنید p.SetScreenOrientation(0)
  2. این خط رو حذف کنید Wait و بجاش از sleep استفاده کنید

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

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

در 9 دقیقه قبل، M-CAP7AIN گفته است :

2 تا احتمال هست

  1. این خط رو حذف کنید p.SetScreenOrientation(0)
  2. این خط رو حذف کنید Wait و بجاش از sleep استفاده کنید

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

ممنون با حذف p.SetScreenOrientation درست میشه ولی من حتما نیاز دارم که صفحه بچرخه چون میخوام فیلم نشون بدم و فیلم ها عریض نشون داده بشن

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

در 1 ساعت قبل، aminmoghadas گفته است :

ممنون با حذف p.SetScreenOrientation درست میشه ولی من حتما نیاز دارم که صفحه بچرخه چون میخوام فیلم نشون بدم و فیلم ها عریض نشون داده بشن

روشی که آقای شاهپیری رو گفتن انجام بدید ، با چرخش صفحه ، اکتیویتی مجدد ساخته میشه ، یک از کاربردهای (FirstTime As Boolean) برای همینه.

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

در 11 دقیقه قبل، M-CAP7AIN گفته است :

روشی که آقای شاهپیری رو گفتن انجام بدید ، با چرخش صفحه ، اکتیویتی مجدد ساخته میشه ، یک از کاربردهای (FirstTime As Boolean) برای همینه.

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

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

بایگانی شده

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

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

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