我想爲我的應用程序創建一個小部件,顯示設備的CPU使用率,電池電量和剩餘的RAM;不是存儲空間。Android小工具:顯示內存
CPU級別和電池充電代碼工作正常;但是RAM代碼沒有。我已經閱讀過,爲了在AppWidgetProvider中使用.getSystemService(),您必須將活動的上下文傳遞到此處。
的問題是,當方法試圖建立一個systemService與ActivityManager,它拋出:
01-11 21:29:21.468: E/AndroidRuntime(30759): java.lang.RuntimeException: Unable to instantiate receiver com.example.myfirstappex.AppWidget: java.lang.NullPointerException
我已經縮小了問題的代碼塊:
import com.example.myfirstappex.MainActivity;
public class AppWidget extends AppWidgetProvider {
...
public long getRam()
{
MemoryInfo mi = new MemoryInfo();
Context mainCon = MainActivity.getAppContext();
ActivityManager activityManager = (ActivityManager)mainCon.getSystemService(Context.ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
long availableMegs = mi.availMem/1048576L;
//Returning the value
return(availableMegs);
}
...
}
任何關於如何解決這個問題的想法?或者獲取並顯示小部件中的RAM的替代方法?
編輯:整個錯誤日誌:
01-11 22:21:32.426: E/AndroidRuntime(32059): FATAL EXCEPTION: main
01-11 22:21:32.426: E/AndroidRuntime(32059): java.lang.RuntimeException: Unable to start receiver com.example.myfirstappex.AppWidget: java.lang.NullPointerException
01-11 22:21:32.426: E/AndroidRuntime(32059): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2383)
01-11 22:21:32.426: E/AndroidRuntime(32059): at android.app.ActivityThread.access$1500(ActivityThread.java:141)
01-11 22:21:32.426: E/AndroidRuntime(32059): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
01-11 22:21:32.426: E/AndroidRuntime(32059): at android.os.Handler.dispatchMessage(Handler.java:99)
01-11 22:21:32.426: E/AndroidRuntime(32059): at android.os.Looper.loop(Looper.java:137)
01-11 22:21:32.426: E/AndroidRuntime(32059): at android.app.ActivityThread.main(ActivityThread.java:5039)
01-11 22:21:32.426: E/AndroidRuntime(32059): at java.lang.reflect.Method.invokeNative(Native Method)
01-11 22:21:32.426: E/AndroidRuntime(32059): at java.lang.reflect.Method.invoke(Method.java:511)
01-11 22:21:32.426: E/AndroidRuntime(32059): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-11 22:21:32.426: E/AndroidRuntime(32059): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-11 22:21:32.426: E/AndroidRuntime(32059): at dalvik.system.NativeStart.main(Native Method)
01-11 22:21:32.426: E/AndroidRuntime(32059): Caused by: java.lang.NullPointerException
01-11 22:21:32.426: E/AndroidRuntime(32059): at com.example.myfirstappex.AppWidget.getRam(AppWidget.java:82)
01-11 22:21:32.426: E/AndroidRuntime(32059): at com.example.myfirstappex.AppWidget.onUpdate(AppWidget.java:35)
01-11 22:21:32.426: E/AndroidRuntime(32059): at android.appwidget.AppWidgetProvider.onReceive(AppWidgetProvider.java:66)
01-11 22:21:32.426: E/AndroidRuntime(32059): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2376)
01-11 22:21:32.426: E/AndroidRuntime(32059): ... 10 more
這隻有在主應用程序沒有運行情況。
您可以發佈整個日誌嗎?所有的紅色的東西。 – Eric
我已添加日誌。 – ADiabeticBadger