我不知道如何去声明我的子类Timer
的timer1
实例。我被告知我需要初始化实例,但如果timer1
是一个类实例而不是原始类型,我该怎么做?这里是我的代码:关于类实例的初始化
package com.example.derpphone;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.SocketException;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity implements OnClickListener{
public class Timer extends TimerTask {
DatagramSocket socket;
public Timer() throws SocketException {
this.socket = new DatagramSocket();
}
@Override
public void run() {
while (true){
if (socket != null) {
byte[] bytes = new byte[100];
SocketAddress serverAddress = new InetSocketAddress("131.179.176.74", 9998);
try {
DatagramPacket packet = new DatagramPacket(bytes,
bytes.length, serverAddress);
socket.send(packet);
} catch (Exception e) {
}
}
}
}
}
Timer timer1;
public MainActivity() throws SocketException{
timer1 = new Timer();
}
String error = "error";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View callButton = findViewById(R.id.btnCall);
callButton.setOnClickListener(this);
;
}
private void phoneCall()
{
String phoneCallUri = "tel://myPhoneNumber";
Intent phoneCallIntent = new Intent(Intent.ACTION_CALL);
phoneCallIntent.setData(Uri.parse(phoneCallUri));
startActivity(phoneCallIntent);
}
@Override
public void onClick(View view) {
switch(view.getId())
{
case R.id.btnCall:
timer1.run();
phoneCall();
break;
case R.id.end:
timer1.cancel();
break;
default:
System.out.println(error);
break;
}
}
}
如果timer1不是一个变量,那么它还能是什么? – AmmarCSE
它是一个子类的实例。 – user3827226
我被告知添加子类是处理它的最好方法。 – user3827226