編輯:關於Android編程
很多人以為在Android中activity中的onCreate方法才是Android程序的入口,但並非如此。
Android中Application類中的onCreate方法才是Android程序的真正入口,而非activity對象中onCreate方法。
Android中activity可以有,也可以沒有,也確實存在沒有activity對象的Android程序,而Android中application類是在程序啟動時才創建,並且只會創建一個,通常情況下,我們是不需要創建自己的application對象,程序會自動幫我們創建。正是程序自動幫我們創建Application對象,很多情況下,我們不需具體實現的原因,導致我們忽略了Application對象,誤以為activity對象中的onCreate方法才是Android程序的入口。
下面詳細介紹一下Android中的Application類:
Application類的繼承關系如下:
java.lang.Object
android.content.Context
android.content.ContextWrapper
android.app.Application
Application類包含了4個公開的方法
void onConfigurationChanged(Configuration newConfig)
void onCreate() //這裡才是真正的入口點。
void onLowMemory()
void onTerminate()
若想創建自己的application對象,只需繼承Application類,並在AndroidMainfest.xml文件中的application標簽中進行注冊。
application對象的聲明周期是Android程序中最長的,它的聲明周期相當於整個程序的生命周期。也就是說它是全局的,是單例的,所以在不同的activity,service中獲得的對象都是同一個,可以通過application對象來實現真正意義上的全局變量,進行數據傳遞,數據共享,數據緩存等操作,這種全局變量方法直到程序被destroy才會被銷毀。
一個實現真正意義上Android程序的全局變量設置與獲取的應用如下:
1、實現Application類
public class CustomApplication extends Application
{
private static final String VALUE = Harvey;
private String value;
@Override
public void onCreate()
{
super.onCreate();
setValue(VALUE); // 初始化全局變量
}
public void setValue(String value)
{
this.value = value;
}
public String getValue()
{
return value;
}
}
2、在AndroidMainfest.xml文件中配置
3、調用整個程序的全局變量
public class FirstActivity extends Activity
{
private CustomApplication app;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
app = (CustomApplication) getApplication(); // 獲得CustomApplication對象
Log.i(FirstActivity, 初始值===== + app.getValue()); // 獲取進程中的全局變量值,看是否是初始化值
app.setValue(Harvey Ren); // 重新設置值
Log.i(FirstActivity, 修改後===== + app.getValue()); // 再次獲取進程中的全局變量值,看是否被修改
Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);
public class SecondActivity extends Activity
{
private CustomApplication app;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
app = (CustomApplication) getApplication(); // 獲取應用程序
Log.i(SecondActivity, 當前值===== + app.getValue()); // 獲取全局值
}
}(intent);
}
}
本實例實現每隔5秒上傳一次,通過服務器端獲取手機上傳過來的文件信息並做相應處理;采用Android+Struts2技術。一、Android端實現文件上傳1)、新建一個An
RadioGroup+ViewPager+Fragment實現的可滑動的Tab頁,非常的靈活。最終效果圖 demo下載:http://download.csdn.net/
在這篇文章中,我將介紹如何實現列表中的視頻播放。在流行的應用,如Facebook,Instagram的或Magisto的工作原理相同:Facebook的:Ma
如果標題欄過多,超過屏幕的寬度,該怎麼弄,下面我們就來解決一下,效果如下:其實和之前寫的也差不多,我就是在哪個demo裡面添加和修改了一下,就加了幾個title標題,加了