创建MyComputerService,重写onStartCommand方法并实现计算,将计算结果通过Toast提示; 2)定义广播接收者MyComputerReceiver,在onReceive方法中启动MyComputerService; 3)点击“科学计算”按钮向MyComputerReceiver发送广播并传入n的值。
时间: 2024-02-27 08:58:48 浏览: 7
好的,下面是实现计算并通过Toast提示的MyComputerService类和启动服务的MyComputerReceiver广播接收者的代码:
1. 创建一个继承自Service的MyComputerService类:
```
public class MyComputerService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
int n = intent.getIntExtra("n", 0);
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
Toast.makeText(this, "1+2+3+...+" + n + "=" + sum, Toast.LENGTH_SHORT).show();
return START_NOT_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
```
2. 创建一个继承自BroadcastReceiver的MyComputerReceiver广播接收者:
```
public class MyComputerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int n = intent.getIntExtra("n", 0);
Intent serviceIntent = new Intent(context, MyComputerService.class);
serviceIntent.putExtra("n", n);
context.startService(serviceIntent);
}
}
```
3. 在需要启动服务的地方,注册MyComputerReceiver广播接收者并发送广播:
```
MyComputerReceiver receiver = new MyComputerReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("com.example.action.COMPUTE");
registerReceiver(receiver, filter);
// 点击“科学计算”按钮
int n = Integer.parseInt(editText.getText().toString());
Intent intent = new Intent("com.example.action.COMPUTE");
intent.putExtra("n", n);
sendBroadcast(intent);
```
这样就可以通过广播+服务方式后台计算1+2+3....+n了。在MyComputerService中实现计算并通过Toast提示结果。在MyComputerReceiver中接收广播并启动MyComputerService。在需要启动服务的地方注册广播接收者并发送广播。