Android Context POWERについてSERVICEの実用化

3406 ワード

一、Contextコンテキストの概念
Contextの一般性は、リソースのロード、新しいActivityの起動、システム・サービスの取得、内部ファイル(クリップ)パスの取得、View操作の作成などに必要です.Contextとは何なのか、Contextの文字通りの意味コンテキスト、あるいはシーンと呼ばれています.つまり、ユーザーがオペレーティングシステムと操作するプロセスです.例えば、電話をかけるなど、シーンには電話プログラムに対応するインタフェースや、背後に隠されたデータが含まれています.しかしプログラムの角度でContextは何ですか?プログラムの角度で、私達は比較的に権威のある答えがあって、Contextは抽象的なクラスです.
Activity、Service、ApplicationはいずれもContextのサブクラスである.
つまり、Androidシステムの観点から、Contextはオペレーティングシステムとのインタラクションのプロセスを表すシーンであることを理解します.プログラムの観点から、Contextは抽象クラスであり、Activity、Service、Applicationなどはそのクラスの実装である.
        
二、Context POWERについてSERVICEの実用化
1、AndroidManifest.xmlのアプリケーションに追加
         android:name="packagename.MyApplication"
2、MyApplicationを作成する.java
public class MyApplication extends Application {          public static Context context;
         @Override
         public void onCreate(){ context = getApplicationContext() }\
         public static Context getcontext(){
                  return context;
         }
}
3、サードパーティクラス(ここで定義するのはSuspendHandlerクラス)でPOWER_を使用するSERVICE
SuspendHandlerクラスでsuspendDevice()メソッドを定義します.
public static void suspendDevice() {
    PowerManager pm = (PowerManager)MyApplication.getContext().getSystemService(Context.POWER_SERVICE);

    try {
        Method e = pm.getClass().getDeclaredMethod("goToSleep", new Class[]{Long.TYPE, Integer.TYPE, Integer.TYPE});
        e.setAccessible(true);
        e.invoke(pm, new Object[]{Long.valueOf(SystemClock.uptimeMillis()), Integer.valueOf(0), Integer.valueOf(0)});
    } catch (NoSuchMethodException var3) {
        var3.printStackTrace();
    } catch (InvocationTargetException var4) {
        var4.printStackTrace();
    } catch (IllegalAccessException var5) {
        var5.printStackTrace();
    }
}

4、Activityでこのメソッドを呼び出す
           SuspendHandler.suspendDevice(this);