您的位置:首页 > 移动开发 > Android开发

安卓 多线程、以及使用Handler发送、处理Message(新手笔记-10)

2018-03-09 16:39 302 查看
我是用一个fragment实现的,有差异的地方自行更改:
public class SecondFragment extends Fragment {

public static final int UPDATE_INT = 1;

TextView textView;
Button second_btn;
View view;

//使用handler进行消息处理和传递
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case UPDATE_INT:
Log.v("Message", msg.what + "");
break;
case 0:
Log.v("Message", "00000000000000000");
break;
default:
Log.v("Message","aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
super.handleMessage(msg);
}
};

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//避免同一activity下 多个fragment 切换时重复执行onCreateView方法
// Fragment之间切换时每次都会调用onCreateView方法,导致每次Fragment的布局都重绘,无法保持Fragment原有状态。
if (view == null) {
view = inflater.inflate(R.layout.second_fragment, container, false);
} else {
ViewGroup parent = (ViewGroup) view.getParent();
if (null != parent) {
parent.removeView(view);
}
}

textView = view.findViewById(R.id.second_title);
second_btn = view.findViewById(R.id.second_btn);

String text = textView.getText().toString();
second_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//多线程的应用
new Thread(new Runnable() {
@Override
public void run() {
Message msg = new Message();
msg.what = UPDATE_INT;
handler.sendMessage(msg);
//sendEmptyMessage封装了一个msg.what,可以直接通过输入参数设置what,其他信息为空
handler.sendEmptyMessage(0);
}
}).start();
}
});

return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android
相关文章推荐