Android 全局变量Application 来统筹整个应用的公共数据-----广播通信

来源:互联网 发布:易企秀邀请函报名数据 编辑:程序博客网 时间:2024/06/10 00:33



第一步:新建 MyApplication

package com.server;import android.app.Application;public class MyApplication extends Application {/* * 此处记录所有广播信息标志 */private String _TrainGrade_Line_DATA_CHANGE = "TrainGrade_Line_DATA_CHANGE";public String getTrainGradeLineDataChange() {return _TrainGrade_Line_DATA_CHANGE;}@Overridepublic void onCreate() {super.onCreate();}@Overridepublic void onTerminate() {super.onTerminate();}}

第二步:注册应用启动的application  AndroidManifest.xml 中添加

    <application
    android:name="com.server.MyApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="TrainGradeActivity"></activity>
    </application>


第三步: Activity中获取公共数据

public class TrainGradeActivity extends Activity {<span style="color:#ff0000;">MyApplication myapp = (MyApplication) this.getApplication();//动态曲线数据变更消息标志private  String TrainGrade_Line_DATA_CHANGE = myapp.getTrainGradeLineDataChange();</span>//动态曲线private DynamicLine dynamicLine;<span style="background-color: rgb(255, 255, 102);">//this 广播监听private BroadcastReceiver mBroadcastReceiver;</span>    private int mX = 40;        //activity 自身布局    private RelativeLayout mainLayout;    /** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏        setContentView(R.layout.activity_traingrade);                //填充自定义视图到页面        InjectView();        <span style="background-color: rgb(255, 255, 102);">Inital();</span><span style="background-color: rgb(255, 255, 102);">        //注册广播        registerBoradcastReceiver();</span>                //新建线程,模拟消息发送,重绘压力曲线        new Thread(){              public void run() {                  for (int index=0; index<20; index++)                  {                  <span style="background-color: rgb(255, 255, 51);">Intent mIntent = new Intent(TrainGrade_Line_DATA_CHANGE);                      mIntent.putExtra("Point_X",mX);                      mIntent.putExtra("Point_Y",(int)(Math.random()*200));                     //发送广播                      sendBroadcast(mIntent); </span>                    try {                        sleep(1000);                        } catch (InterruptedException e) {                            // TODO Auto-generated catch block                            e.printStackTrace();                        }                                                mX += 30;                    }              };          }.start(); }@Overrideprotected void onResume() { /**  * 设置为横屏  */ if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } super.onResume();}/* * 自定义控件填充到页面布局中 */private void InjectView(){        //需要填充的父布局        mainLayout = (RelativeLayout) findViewById(R.id.Traingrade_Left_Layout);         //布局填充服务        LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);        //定义自定义控件        View ItypetixinLayout = layoutInflater.inflate(R.layout.itypetixin, null);        View DynamicLineLayout = layoutInflater.inflate(R.layout.dynamicline, null);        //将自定义控件加入到主视图中        mainLayout.addView(ItypetixinLayout);        mainLayout.addView(DynamicLineLayout);}private void Inital(){        //获取动态曲线        dynamicLine = (DynamicLine) this.findViewById(R.id.DynamicLine);        <span style="background-color: rgb(255, 255, 51);">//监听广播 向动态曲线发送最新数值        mBroadcastReceiver = new BroadcastReceiver(){    @Override    public void onReceive(Context context, Intent intent) {    String action = intent.getAction();    if(action.equals(TrainGrade_Line_DATA_CHANGE)){        int xstr = intent.getIntExtra("Point_X",0);        int ystr = intent.getIntExtra("Point_Y",0);    dynamicLine.setLinePoint(xstr, ystr);    }    }        };</span>            }<span style="background-color: rgb(255, 255, 102);">//注册广播private void registerBoradcastReceiver(){          IntentFilter myIntentFilter = new IntentFilter();          myIntentFilter.addAction(TrainGrade_Line_DATA_CHANGE);          //注册广播        registerReceiver(mBroadcastReceiver, myIntentFilter);      } </span>}



0 0
原创粉丝点击