gpt4 book ai didi

android - 如何在android中使用服务

转载 作者:行者123 更新时间:2023-11-30 02:47:57 26 4
gpt4 key购买 nike

我是安卓新手。我想使用一些后台进程。所以我决定使用服务。因此,我制作了一个简单的应用程序来学习使用。但是应用程序停止了。在 list 中我定义了服务。 在日志猫中显示:

07-12 17:49:03.067: E/AndroidRuntime(3367): Caused by: java.lang.InstantiationException: 无法实例化类 com.example.servicetest.service;没有空构造函数

public class MainActivity extends Activity {
private Button b;
private TextView tv;
private BroadcastReceiver br=new BroadcastReceiver() {

@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
tv.setText(arg1.getExtras().getString("s").toString());
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b=(Button) findViewById(R.id.button1);
tv=(TextView) findViewById(R.id.textView1);
b.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
startService(new Intent(getApplicationContext(), service.class));
}
});
}

public class service extends IntentService {
public service(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stu
intent.putExtra("s", "salam");
sendBroadcast(intent);
}
}

最佳答案

异常明确指出:没有空构造函数

您应该向您的服务添加一个空的构造函数。您应该将您的服务提取到一个单独的类中,并向其添加一个默认公共(public)构造函数:

public service() {
super("MyService");
}

此外,您应该在 onResume 中注册您的 BroadcastReceiver :

registerReceiver(br,new IntentFilter("event"));

然后在 onPause 取消注册:

unregisterReceiver(br);

现在在您的服务中 onHandleIntent 发送广播:

Intent send = new Intent("event");
send.putExtra("s", "salam");
sendBroadcast(send);

关于android - 如何在android中使用服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24713419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com