`

Android Application 在项目中的妙用

 
阅读更多
一、共享全局数据
这个效果就是使用静态变量是一样的,但是其更符合android的架构体系。

class MyApp extends Application {

  private String myState;

  public String getState(){
    return myState;
  }
  public void setState(String s){
    myState = s;
  }
}



class Blah extends Activity {

  @Override
  public void onCreate(Bundle b){
    ...
    MyApp appState = ((MyApp)getApplicationContext());
    String state = appState.getState();
    ...
  }
}



二、全局提示信息、对话框弹出:



public class BaseApp extends Application {
	public Context context;
	private Handler handler;

	@Override
	public void onCreate() {
		super.onCreate();
		context = getBaseContext();
		handler = new Handler();
	}

	public void showToast(final int resId) {
		handler.post(new Runnable() {
			@Override
			public void run() {
				Toast.makeText(context, resId, Toast.LENGTH_SHORT).show();
			}
		});
	}

	public void showToast(final String text) {
		handler.post(new Runnable() {
			@Override
			public void run() {
				Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
			}
		});
	}
}


AlertDialog.Builder(Context context)中的context不能使用getApplicationContext()获得的Context,而必须使用Activity的Context对象,因为只有一个Activity才能添加一个窗体。
三、其他
貌似还不够妙~!期待补充!!!

补充:
application context的生命周期是贯穿整个进程,Activity的context只是伴随Activity的生命周期;
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics