0
import android.app.Activity;
import android.app.Service;
import android.app.WallpaperManager;
import android.content.Intent;
import android.os.Bundle;


public class Preview extends Activity {

    public Preview() {
        // TODO Auto-generated constructor stub
    }

        @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        Intent intent = new Intent();
        intent.setAction(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
        String pkg = Service.class.getPackage().getName();
    }
}

の使い方が気になりますService.class.getPackage().getName();。パッケージ名が取得されていることがわかります。私の質問は、Service.class の使用に関するものです。それが何を意味するか、またはどのオブジェクトがアクセスされているか。

4

3 に答える 3

1

通常、これは Java でクラスを初期化するために使用されます (既知のパターンは Class.forName("some.Clazz") です)。クラスを強制的にロードし、その静的フィールドを初期化します (例: 一般に JDBC ドライバーの場合)。

今、あなたは andoid (その後 dalvik) の下にいますが、このパターンはどこで手に入れたのですか?

于 2013-07-19T23:27:20.300 に答える
1

を含む文字列を取得するのは遠回り"android.app"です。副作用として、Service クラスもロードします (これはフレームワーク クラスであり、静的初期化子を持たないため、まったく役に立ちません)。アプリケーションのパッケージ名 (マニフェストで宣言されているもの) を探している場合は、実際に実行する必要がありますthis.getPackageName()(Activityは であるためContext)

于 2013-07-19T23:32:48.827 に答える
-1
  • アプリケーションがバックグラウンドで実行したいことをシステムに伝えるための機能 (ユーザーが
    アプリケーションと直接対話していない場合でも)。これは、Context.startService() の呼び出しに対応します。これは、システムに
    サービスの作業をスケジュールするように要求し、サービスまたは他の誰かが明示的に
    停止するまで実行されます。
  • アプリケーションがその機能の一部を他のアプリケーションに公開するための機能。これは Context.bindService() の呼び出しに対応し 、サービスと対話するためにサービスへ
    の長期接続を可能にします。

出典: Android 開発ドキュメント

出典:サービスとは

于 2013-07-19T23:25:09.477 に答える