模拟双⾊球的随机选号器:
3.实例:模拟双⾊球的随机选号器:Service2 这⾥使⽤的时Bind Service(绑定Service)
a.布局界⾯
b.创建Service,实现⽣成随机的号码
i.创建⼀个service⽂件BinderService,创建⼀个MyBinder内部类,⽤于获取Service对象和Service状态ii.返回⼀个有效的IBinder对象,⽤于实现Service和绑定它的组件之间进⾏通信
iii.⾃定义⽅法,⽤于⽣成随机数
iiii.重写onDestory⽅法,来销毁Service
c.绑定Service,并获取显⽰随机的号码
i.定义⼀个BinderService对象<=>声明⼀个Service类的对象
ii.创建ServiceConnection对象
iii.在onCreate⽅法中调⽤BinderService⽅法中定义的获取随机数⽅法,并将结果显⽰在⽂本框中
iiii.重写onStart&&onStop⽅法,让Service和Activity进⾏绑定
ample.service2;
import android.app.Service;
t.Intent;
import android.os.Binder;
import android.os.IBinder;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class BinderService extends Service {
public BinderService() {
}
//创建⼀个MyBinder内部类,⽤于获取Service对象和Service状态
public class MyBinder extends Binder{
//创建获取Service的⽅法
public BinderService getService(){
return BinderService.this;//返回当前的Service类
}
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
/
/ throw new UnsupportedOperationException("Not yet implemented");
//返回⼀个有效的IBinder对象,⽤于实现Service和绑定它的组件之间进⾏通信
return new MyBinder();//返回MyBinder对象
}
//
public List getRandomNumber(){
List resArr=new ArrayList();
//定义⼀个变量⽤于保存⽣成后的随机数
String strNumber="";
for(int i=0;i<7;i++){
//⽣成指定范围的随机整数
int number=new Random().nextInt(33)+1;
//字符串格式化
if(number<10){
strNumber="0"+String.valueOf(number);
}else{
strNumber=String.valueOf(number);
}
resArr.add(strNumber);
}
return resArr;
}
@Override
public void onDestroy() {
}
}
ample.service2;
import androidx.appcompat.app.AppCompatActivity;
t.ComponentName;
t.Intent;
t.ServiceConnection;
import android.os.Bundle;
java生成随机数的方法
import android.os.IBinder;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.List;
public class MainActivity extends AppCompatActivity {
BinderService binderService;//声明⼀个Service类的对象
//⽂本框组件ID
int[] tvid={View1,View2,View3,View4,View5,View6,View7};    @Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
Button button=findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//要在这个⽅法中调⽤BinderService⽅法中定义的获取随机数⽅法
List RandomNumber();
for(int i=0;i<number.size();i++){
TextView tv=findViewById(tvid[i]);
tv.(i).toString());//显⽰⽣成的随机号码
}
}
});
}
//创建ServiceConnection对象
private ServiceConnection conn=new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
//获取后台的Service
binderService=((BinderService.MyBinder)iBinder).getService();
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
}
};
@Override
protected void onStart() {
Intent intent=new Intent(this,BinderService.class);
bindService(intent,conn,BIND_AUTO_CREATE);
//第⼀个参数式conn对象,第⼆个式conn对象,第三个参数设定为⾃动创建Service
}
@Override
protected void onStop() {
unbindService(conn);
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="schemas.android/apk/res/android"
xmlns:app="schemas.android/apk/res-auto"
xmlns:tools="schemas.android/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="随机选号"/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第1个号码"/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第2个号码"/>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="第3个号码"/>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="第4个号码"/>
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="第5个号码"/>
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="第6个号码"/>
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="第7个号码"/>
</LinearLayout>
</RelativeLayout>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。