一.開發過程中有時不可避免的要使用全局變量.
之前的做法都是直接按照java的方式設置靜態變量public static int 來定義一個全局變量,後來發現這個值有時就莫名其妙的消失了.估計是隨activity生命周期或者Android回收機制給搞沒了.找到答案了.
另一個適合android的全局變量方法:
1.建一個全局類
- class MyApp extends Application {
-
- private String myState;//全局變量
-
- public String getState(){
- return myState;
- }
- public void setState(String s){
- myState = s;
- }
- }
2.調用時
- class Blah extends Activity {
-
- @Override
- public void onCreate(Bundle b){
- ...
- MyApp appState = ((MyApp)getApplicationContext()); //在任何地方調用時都這麼寫.
- String state = appState.getState();
- ...
- }
- }
3.最後別忘了.在你的 AndroidManifest.xml 加上android:name (不是新建<application>標簽哦.)
- <application android:name=".MyApp"
- android:icon="@drawable/icon"
- android:label="@string/app_name">
二.通過包名啟動程序.
我們知道要調用一個程序,要知道一個程序的包名和Activity名.比如調用短信時
- Uri smsUri = Uri.parse("tel:10086");
- returnIt = new Intent(Intent.ACTION_VIEW, smsUri);
- returnIt.putExtra("sms_body", "yyyy");
- returnIt.setType("vnd.android-dir/mms-sms");
但是有時要啟動一些山寨手機自帶的系統軟件時.你不知道Activity名.就可以直接用包名啟動系統自帶的程序.
- Intent intent = getPackageManager().getLaunchIntentForPackage("com.android.xxxxxxx");
- if(intent!=null)startActivity(intent);
關於如何查看系統自帶程序的報名可以在目錄 system/app下查看.