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

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


amir mahdizadeh

سوال

سلام دوستان

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

2 تا اسپینر دارم که زمان رو از کاربر میگیرم (یکی ساعت و یکی دقیقه) ساعت شروع مصرف

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

یدونه هم ادیت تکست دارم که تعداد دارو رو از کاربر میگیرم

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

حالا مشکل اینجاس که برنامه یر بعضی از ساعات مثلا 14:30 یا 20:30 یا 8:30 یا 2:30 یا .....(کلا ساعت هایی که نیم  دارن) فورس کلوز میده

مثلا برنامه کلا بستس اما سر ساعت 16:30 که میشه یهو force close میده در صورتی که من هنوز الارم هم ست نکردم

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

با تشکر

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

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

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

سلام

کدهای رویداد OnReceive تون رو بذارید. حتما یکاری انجام دادین که باعث میشه اون ساعت فورس کلوز بشه.

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


Sub pn_OnReceive(Action As String,keys() As String,Data As Object)

Dim t As tabdilAdadBeEn

t.Initialize

If File.Exists(File.DirInternal,"databaseaz.db") = False Then

File.Copy(File.DirAssets,"databaseaz.db",File.DirInternal,"databaseaz.db")

End If

If sql3.IsInitialized = False Then

sql3.Initialize(File.DirInternal,"databaseaz.db",True)

End If

cur3 = sql3.ExecQuery("SELECT * FROM drug WHERE number_of_drug > 0")

For i = 0 To cur3.RowCount - 1

cur3.Position = i

Dim doz As Int

Dim result As Int

Dim x As String = cur3.GetString("doz")

Select x

Case "هر 4 ساعت"

doz = 4

Case "هر 6 ساعت"

doz = 6

Case "هر 8 ساعت"

doz = 8

Case "هر 12 ساعت"

doz = 12

Case "هر 24 ساعت"

doz = 24

Case "هر 3 روز"

doz = 72

Case "هر هفته"

doz = 168

End Select

Dim t1 As String=DateTime.Time(DateTime.Now)

t1=t1.SubString2(0,2)

t1=t.Tabdil(t1)

result = (t1-cur3.GetInt("start_time_h"))

result = result - ((result / doz) * doz)

If Action="android.intent.action.TIME_TICK" Then

Dim time As String=cur3.GetString("start_time_m")

Dim time2 As String=DateTime.Time(DateTime.Now)

time=t.Tabdil(time)

time2=time2.SubString2(3,5)

time2=t.Tabdil(time2)

If result = 0 And time2 = time And cur3.GetInt("number_of_drug") > 0 Then

n.Initialize

n.Icon="icon"

n.OnGoingEvent=True

n.AutoCancel=True

drug.cur2 = drug.sql2.ExecQuery("SELECT name FROM person WHERE id = "&cur3.GetInt("idp"))

drug.cur2.Position=0

Dim notyf As String = cur3.GetString("drug_name")

notyf = "زمان مصرف داروی "& notyf &" برای "& drug.cur2.GetString("name")

n.SetInfo("آنالیز آزمایش",notyf,getNoty)

n.Notify(1)

med.Initialize

med.Load(File.DirAssets,"ring.mp3")

med.Looping=True

med.Play

drug.sql2.ExecNonQuery("update drug set number_of_drug=number_of_drug-1 where id ="&cur3.GetInt("id"))

End If

End If

Next

End Sub

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

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

اون رو هم بذار...

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


** Activity (main) Pause, UserClosed = true **
** Activity (menu) Create, isFirst = true **
** Activity (menu) Resume **
** Service (hoshdar) Start **
hoshdar_pn_onreceive (java line: 236)
java.lang.RuntimeException: Object should first be initialized.
	at anywheresoftware.b4a.sql.SQL.checkNull(SQL.java:48)
	at anywheresoftware.b4a.sql.SQL.ExecQuery(SQL.java:154)
	at ir.analyse.test.hoshdar._pn_onreceive(hoshdar.java:236)
	at java.lang.reflect.Method.invoke(Native Method)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
	at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
	at PNBroadcastReceiver.PNBrodcastReceiver$1.onReceive(PNBrodcastReceiver.java:53)
	at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:881)
	at android.os.Handler.handleCallback(Handler.java:739)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:148)
	at android.app.ActivityThread.main(ActivityThread.java:5417)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.TIME_TICK flg=0x50000014 (has extras) } in PNBroadcastReceiver.PNBrodcastReceiver$1@3c1feea
	at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:891)
	at android.os.Handler.handleCallback(Handler.java:739)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:148)
	at android.app.ActivityThread.main(ActivityThread.java:5417)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Object should first be initialized.
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:206)
	at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
	at PNBroadcastReceiver.PNBrodcastReceiver$1.onReceive(PNBrodcastReceiver.java:53)
	at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:881)
	... 7 more
Caused by: java.lang.RuntimeException: Object should first be initialized.
	at anywheresoftware.b4a.sql.SQL.checkNull(SQL.java:48)
	at anywheresoftware.b4a.sql.SQL.ExecQuery(SQL.java:154)
	at ir.analyse.test.hoshdar._pn_onreceive(hoshdar.java:236)
	at java.lang.reflect.Method.invoke(Native Method)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
	... 10 more

هم عکس هم متنش

خدمت شما

post-4620-0-39437500-1466450111_thumb.png

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

Object should first be initialized. at anywheresoftware.b4a.sql.SQL.checkNull

امیر جان میگه sql اینیشیالایز نشده.

اینو مورد رو بررسی کن.

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

Sub Service_Start (StartingIntent As Intent)
	StartServiceAt("", DateTime.Now + 60000,True)
	
End Sub
Sub pn_OnReceive(Action As String,keys() As String,Data As Object)
	
	Dim t As tabdilAdadBeEn
	t.Initialize
	
	If File.Exists(File.DirInternal,"databaseaz.db") = False Then
		File.Copy(File.DirAssets,"databaseaz.db",File.DirInternal,"databaseaz.db")
	End If
	
	If sql3.IsInitialized = False Then
		sql3.Initialize(File.DirInternal,"databaseaz.db",False)
	End If

	cur3 = sql3.ExecQuery("SELECT * FROM drug WHERE number_of_drug > 0")

	For i = 0 To cur3.RowCount - 1
		cur3.Position = i
		Dim doz As Int
		Dim result As Int
		Dim x As String = cur3.GetString("doz")
		Select x
			Case "هر 4 ساعت"
				doz = 4	
			Case "هر 6 ساعت"
				doz = 6
			Case "هر 8 ساعت"
				doz = 8
			Case "هر 12 ساعت"
				doz = 12
			Case "هر 24 ساعت"
				doz = 24
			Case "هر 3 روز"
				doz = 72
			Case "هر هفته"
				doz = 168
		End Select
		Dim t1 As String=DateTime.Time(DateTime.Now)
		t1=t1.SubString2(0,2)
		t1=t.Tabdil(t1)
		result = (t1-cur3.GetInt("start_time_h"))
		result = result - ((result / doz) * doz)

		If Action="android.intent.action.TIME_TICK" Then
			Dim time As String=cur3.GetString("start_time_m")
			Dim time2 As String=DateTime.Time(DateTime.Now)
			time=t.Tabdil(time)
			time2=time2.SubString2(3,5)			
			time2=t.Tabdil(time2)

			If result = 0 And time2 = time And cur3.GetInt("number_of_drug") > 0 Then
				n.Initialize
				n.Icon="icon"
				n.OnGoingEvent=True
				n.AutoCancel=True
				
				drug.cur2 = drug.sql2.ExecQuery("SELECT name FROM person WHERE id = "&cur3.GetInt("idp"))
				drug.cur2.Position=0
				Dim notyf As String = cur3.GetString("drug_name")
				notyf = "زمان مصرف داروی "& notyf &" برای "& drug.cur2.GetString("name")
				n.SetInfo("آنالیز آزمایش",notyf,getNoty)
				n.Notify(1)
				med.Initialize
				med.Load(File.DirAssets,"ring.mp3")
				med.Looping=True
				med.Play
				drug.sql2.ExecNonQuery("update drug set number_of_drug=number_of_drug-1 where id ="&cur3.GetInt("id"))
			End If
		End If
	Next
End Sub

ببین داش این هم کد های service start

sql رو هم اینیشیالایز کردم

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

بایگانی شده

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

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

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