2013-07-19 44 views
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。這是什麼意思或什麼對象被訪問。Android在活動中使用服務

回答

1

通常,這用於初始化Java中的類(知道的模式是Class.forName(「some.Clazz」))。它強制一個類被加載,並且它的靜態字段被初始化(例如,通常用於JDBC驅動程序)。

現在你處於類固體(然後達爾維克)之下,你從哪裏得到這種模式?

+0

這是一個動態壁紙示例。我現在看到你對初始化靜態類型意味着什麼。 .class的使用我最初並不理解。感謝您澄清這一點,它正在初始化另一個.java文件中示例其他地方定義的類Service的靜態成員。 – Giuseppe

-1
  • 一種應用程序告訴的東西,它希望在背景(即使用戶不
    直接與應用程序交互)是做系統設備。這對應於Context.startService()的調用 ,它要求系統安排
    該服務的工作,直到該服務或其他人明確地將其停止爲
  • 應用程序將其某些功能公開給其他應用程序的工具。這相當於調用
    Context.bindService(),它允許一個長期的連接是
    爲了與它進行交互

來源的服務進行:Android Dev Docs

來源:What is a service

1

這是一個迴旋處得到一個包含"android.app"的字符串。作爲一個副作用,它也加載了Service類(由於它是一個框架類並沒有任何靜態初始值設定項,所以它是完全無用的)。如果您正在查找應用程序的包名(在清單中聲明的​​包名),那麼您確實應該做this.getPackageName()(因爲ActivityContext