2012-02-09 104 views
0
// PPS.java 

package com.domain.Servicecrasher; 
import android.app.Service; 
import android.view.Gravity; 
import android.widget.Toast; 
public abstract class PPS extends Service 
{ 
@Override 
public void onCreate() 
{ 
    Toast toasty = Toast.makeText(PPS.this, "service created!", 500); 
    toasty.setGravity(Gravity.CENTER, 0, 200); 
    toasty.show(); 
}; 
public void onDestroy() 
{ 
    Toast toasted = Toast.makeText(PPS.this, "service destroyed!", 500); 
    toasted.setGravity(Gravity.CENTER, 0, -200); 
    toasted.show(); 
}; 
}; 

嘗試使用兩種方法來調用服務:服務崩潰的開始

方法1.

{ 
{ 
    { 
    startService(new Intent(MainMenu.this, PPS.class)); 
    } 
} 
} 

方法2

{ 
{ 
    { 
    Intent startPPS = new Intent(MainMenu.this, PPS.class); 
    startPPS.putExtra("com.domain.Servicecrasher.PPS", false); 
    startService(startPPS); 
    } 
} 
} 

這些都在仿真器上返回一個錯誤說應用程序意外退出,我點擊力量關閉,但主要活動沒有關閉,所以我假設這是我強迫關閉的服務ING。下面是DDMS輸出:

java.lang.RuntimeException: Unable to instantiate service com.domain.Servicecrasher.PPS 
at android.app.ActivityThread.handleCreateService(ActivityThread.java:1929) 
at android.app.ActivityThread.access$2500(ActivityThread.java:117) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:3683) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zygote.java:839) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
at dalvik.system.NativeStart.main(Native Method) 
caused by: java.lang.InstantiationException: com.domain.Servicecrasher.PPS 
at java.lang.Class.newInstaceImp1(Native Method) 
at java.lang.Class.newInstaceI(Class.java:1409) 
at android.app.ActivityThread.handleCreateService(ActivityThread.java:1926) 
... 10 more 

只是幾個簡單的問題。 我做錯了什麼? 這樣做的正確方法是什麼?

最終我需要該服務能夠從SQL基礎加載設置,並在主要活動失去焦點或關閉後繼續將音頻錄製到文件。

現在我很高興如果我可以發起一個簡單的服務。

+0

完整的logcat statctrace。 – kosa 2012-02-09 21:51:56

+0

什麼是「com.domain。** notlaunchingservice ** .PPS」?我們看不到這一點。另外,如果「com.domain。** Servicecrasher ** .PPS」是您嘗試啓動的服務,那麼它是抽象的,無法創建。 – 2012-02-09 21:59:21

+0

發佈了更多logcat。 notlaunchingservice是舊的項目名稱......現在更改爲Servicecrasher以反映當前的掛斷。對困惑感到抱歉。如果我刪除「抽象」我得到一個警告,它不會編譯。我只包括「抽象」,因爲日食暗示它。 – notgoodwithjava 2012-02-09 22:10:46

回答

0

無法實例化抽象類,無論是Service還是其他事物。 Eclipse無疑建議您將abstract關鍵字添加到您的類中,因爲您尚未實現所有必要的方法來創建具體實例。

我不知道Eclipse是否有這樣的選項(我假設它),但IntelliJ IDEA有一個選項,您可以選擇「實現方法」,當你有一個不完整的類,它會添加所有的需要填寫的存根(stub)。試試看,或者查閱完整列表的文檔。

+0

我忘了導入android.os.iBinder。現在工作!你真棒!我經過兩天的嘗試後第一次工作。非常感謝! – notgoodwithjava 2012-02-09 22:33:55

+0

@notgoodwithjava很高興你的工作! – Argyle 2012-02-10 00:14:09