PDA

View Full Version : نحوه فراخوانی یک کلاس در یک سرویس



hamedg1366
شنبه 08 فروردین 1394, 21:12 عصر
با سلام و خسته نباشید خدمت همه دوستان عزیز


چطور میتونم یک لاس که extends Application شده رو در یک سرویس فراخوانی کنم


خود کلاس سرویس رو از BroadcastReceiver فراخوانی میکنم ،

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

public class Service1 extends Service {

public Service1() {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, "Service was Created", Toast.LENGTH_LONG).show();
}

@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
String a=getDeviceName();
Toast.makeText(this, " "+a, Toast.LENGTH_LONG).show();
}

@Override
public void onDestroy() {
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}

public String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return capitalize(model);
} else {
return capitalize(manufacturer) + " " + model;
}
}
private String capitalize(String s) {
if (s == null || s.length() == 0) {
return "";
}
char first = s.charAt(0);
if (Character.isUpperCase(first)) {
return s;
} else {
return Character.toUpperCase(first) + s.substring(1);
}
}

}





اما وقتی میام بصورت زیر اون رو مینویسم خطا میده ؛ متاسفانه هیچ گونه logcat هم ندارم


public class Service1 extends Service {


public static getDeviceinfo getDeviceinfo;//tabe device info

public Service1() {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, "Service was Created", Toast.LENGTH_LONG).show();
}

@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();

getDeviceinfo=new getDeviceinfo(this);

}

@Override
public void onDestroy() {
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}



}

hamedg1366
یک شنبه 09 فروردین 1394, 09:33 صبح
up :(


(نوشته شما بسیار اندک است ، تعداد کاراکتر های هر نوشته دست کم 10 عدد میبایست باشد.)

#root#
یک شنبه 09 فروردین 1394, 09:48 صبح
هدفتون از فراخوانیش چیه؟

این کلاس اصلاً تشابهی با Service و Activity و امثالهم نداره که فراخوانی بشه، اولین کلاسی که توی یه برنامه اجرا میشه این کلاس هست.

peymanf11
یک شنبه 09 فروردین 1394, 10:37 صبح
دوست عزیز بنظر میاد شما خودتون یک کلاس بنام getDeviceinfo ایجاد کردین و اون رو داخل سرویس فراخوانی میکنین؛ اون چیزی که من میبینم مشکلی توی فراخوانی ندارین


باید درست کار کنه وبره داخل کلاستون ،

تنها دو دلیل میتونه برای خطا وجود داشته باشه :

1- توی کلاستون خطای برنامه نویسی دارین

2- احتمالا دستورات کلاس زمان"ی بیشتر از زمان استاندارد نیاز دارن که باعث میشه خطای ANR (Application Not Responding) رخ بده که باید از AsyncTask استفاده کنید.