Android基础笔记二

1.

Android组件之BroadcastReceiver

是一个专注于接收广播通知信息,并作出对应处理的组件。很多广播是源自于系统代码的——比如,通知临时区改变,电池电量低,拍摄了一张照片或用户改变了语言选项。


静态注册广播事件。

Step1:建立自己的广播类,

public class MyBC extends BroadcastReceiver {

	public static final String ACTION="com.example.l004usingbc.intent.action.MyBC";
	@Override
	public void onReceive(Context arg0, Intent arg1) {
		// TODO Auto-generated method stub
		System.out.println("onRecive, data = "+arg1.getStringExtra("txt"));
	}

}

当接收到广播的信息后,在自己建立的类会自动调用onReceive()方法。

Step2:在AndroidMainfest.xml中注册自己建立的类

<receiver android:name="MyBC"></receiver>

Step3:在MainActivity中的onCreate()方法中,为触发广播的按钮添加监听事件。

btnSendBroadCast.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent i = new Intent(MainActivity.this, MyBC.class);
				/*Intent i = new Intent(MyBC.ACTION);
				i.putExtra("txt", "hello suichen");
				sendBroadcast(i);*/
			}
		});
    }

    private final MyBC mybc = new MyBC();

便完成了静态的注册。


动态注册和接触注册。

Step1完全相同。在Step2中注释掉在AndroidMainfest.xml添加的 

<receiver android:name="MyBC"></receiver>

<activity
            android:name="com.example.l004usingbc.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>

在MainActivity中的代码如下:

 btnRegBCR.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				registerReceiver(mybc, new IntentFilter(MyBC.ACTION));
			}
		});
        
        btnUnregBCR.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				unregisterReceiver(mybc);
			}
		});
        
        btnSendBroadCast.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				//Intent i = new Intent(MainActivity.this, MyBC.class);
				Intent i = new Intent(MyBC.ACTION);
				i.putExtra("txt", "hello suichen");
				sendBroadcast(i);
			}
		});
    }

 private final MyBC mybc = new MyBC();

在这种动态的方式中,只有注册了BroadcastReciver,再按发送信息,MyBC才能收到发来的信息。


Android组件之contentprovider.

当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享数据。使用ContentProvider共享数据的好处是统一了数据访问方式。

当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询时,可以使用ContentResolver来完成。要获取ContentResolver对象,可以使用Activity提供的getContentResolver()方法。ContentResolver使用insert、delete、update、query方法,来操作数据。


protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
     Cursor c = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
     
     while(c.moveToNext()) {
    	 System.out.println(">>>>>>>"+c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
     }
    }

要想能获取到电话薄中联系人的姓名,还需要在AndroidManifest.xml配置permission。

<uses-permission android:name="android.permission.READ_CONTACTS"/>


【SCI复现】基于纳什博弈的多微网主体电热双层共享策略研究(Matlab代码实现)内容概要:本文围绕“基于纳什博弈的多微网主体电热双层共享策略研究”展开,结合Matlab代码实现,复现了SCI级别的科研成果。研究聚焦于多个微网主体之间的能源共享问题,引入纳什博弈理论构建双层优化模型,上层为各微网间的非合作博弈策略,下层为各微网内部电热联合优化调度,实现能源高效利用与经济性目标的平衡。文中详细阐述了模型构建、博弈均衡求解、约束处理及算法实现过程,并通过Matlab编程进行仿真验证,展示了多微网在电热耦合条件下的运行特性和共享效益。; 适合人群:具备一定电力系统、优化理论和博弈论基础知识的研究生、科研人员及从事能源互联网、微电网优化等相关领域的工程师。; 使用场景及目标:① 学习如何将纳什博弈应用于多主体能源系统优化;② 掌握双层优化模型的建模与求解方法;③ 复现SCI论文中的仿真案例,提升科研实践能力;④ 为微电网集群协同调度、能源共享机制设计提供技术参考。; 阅读建议:建议读者结合Matlab代码逐行理解模型实现细节,重点关注博弈均衡的求解过程与双层结构的迭代逻辑,同时可尝试修改参数或扩展模型以适应不同应用场景,深化对多主体协同优化机制的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值