Android 近期笔记
1:广播
广播(Broadcast)用于Android组件之间的灵活通信,与Activity的区别在于:
(1)Activity只能1对1,Broadcast可以一对多,一人发送广播,可以多人同时接受处理
(2)对于发送者来说,广播不用考虑接收者是否在工作,接收者在工作就接收广播,接受者不在工作就丢弃广播
(3)对于接收者来说,会收到各式各样的广播,所以接受者要自行过滤符合条件的广播才能进行界报告处理。
主要方法:
方法 | 说明 |
---|---|
sendBroadcast | 发送广播 |
registerReceiver | 注册接收器(一般在 onStart或onResume方法中) |
unregisterReceiver | 注销接收器(一般在onStop或onPause方法中) |
发送广播
public static String EVENT="src.main.java.com.example.qq";
Intent intent = new Intent(LoginActivity.EVENT);
Bundle bundle=new Bundle();
bundle.putString("result","发送广播");
intent.putExtras(bundle);
LocalBroadcastManager.getInstance(LoginActivity.this).sendBroadcast(intent);
Log.d(TAG, "发送了广播 ");
接收广播
//在onStast方法里注册接收器
@Override
public void onStart() {
super.onStart();
receiver=new MyBroadReceiver();
IntentFilter filter=new IntentFilter(LoginActivity.EVENT);
LocalBroadcastManager.getInstance(mContext).registerReceiver(receiver, filter);
Log.d(TAG, "onStart: ");
}
private MyBroadReceiver receiver;
//重写接收器
private class MyBroadReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive: ");
if (intent!=null){
try {
String result=intent.getStringExtra("result");
if (result.equals("发送广播")) {
tv_username.setText(result);
}
}catch (Exception e){
Log.d(TAG, "没有result");
}
}
}
}
2.结合Handler和Runnable实现轮播图
private int mInterval=3000;
/**
* 开始轮播
*/
public void start(){
mHandler.postDelayed(mScroll,mInterval);
}
private Handler mHandler=new Handler();
private Runnable mScroll=new Runnable() {
@Override
public void run() {
scrollToNext();
mHandler.postDelayed(this,mInterval);
}
};
/**
* 自动轮播
*/
private void scrollToNext() {
int index=vp_banner.getCurrentItem()+1;
if (index>=mViewList.size()){
index=0;
}
vp_banner.setCurrentItem(index);
}
效果
3。okhttp的简单使用
OkHttp是一个优秀的网络请求框架 |
---|
使用前要先在build.gradle中加入
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
在AndroidManifest.xml的application节点下加入
android:usesCleartextTraffic="true"
这里是使用同步方法向服务器发起Post请求,添加用户
static String url="http://localhost:8081/add";
public static String getMyPostHttp(User user){
mResult="";
OkHttpClient client=new OkHttpClient();
RequestBody requestBody=new FormBody.Builder()
.add("username",user.getUsername())
.add("password",user.getPassword())
.build();
Request requst=new Request.Builder()
.url(url)
.post(requestBody)
.build();
Call call=client.newCall(requst);
Thread thread= new Thread (new Runnable() {
@Override
public void run() {
try {
//直接execute call
Response response = call.execute();
mResult = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d(TAG, "mResult "+mResult);
return mResult;
}