我做了一个关于android定时器的东西,就是每秒让textviewi刷新一次。代码如下:
package com.timetry;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;import java.util.Timer;
import java.util.TimerTask;public class TimetryActivity extends Activity {
/** Called when the activity is first created. */
private String tag = "@@@";
Timer timer = new Timer();
private int i = 0;
private TextView text = null;
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// TODO Auto-generated method stub
super.handleMessage(msg);
int msgId = msg.what;
Log.e(tag, msgId + "");
switch (msgId)
{
case 1:
text.setText("one more per second" + i);
i++;
break;
default:
break;
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView)findViewById(R.id.text);
setTimerTask();
}
@Override
protected void onDestroy()
{
super.onDestroy();
timer.cancel();
}
private void setTimerTask()
{
timer.schedule(new TimerTask()
{
@Override
public void run()
{
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
}, 0, 1000); }
}
上面的代码可以运行。我改了下代码:如下
package com.timetry;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;import java.util.Timer;
import java.util.TimerTask;public class TimetryActivity extends Activity {
/** Called when the activity is first created. */
private String tag = "@@@";
Timer timer = new Timer();
private int i = 0;
private TextView text = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView)findViewById(R.id.text);
setTimerTask();
}
@Override
protected void onDestroy()
{
super.onDestroy();
timer.cancel();
}
private void setTimerTask()
{
timer.schedule(new TimerTask()
{
@Override
public void run()
{
text.setText("one more per second" + i);
i++;
}
}, 0, 1000); }
}
这样就不行了,运行的时候没显示,调试的时候会报 source not found。
这是怎么回事,我改的代码有问题吗?
package com.timetry;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;import java.util.Timer;
import java.util.TimerTask;public class TimetryActivity extends Activity {
/** Called when the activity is first created. */
private String tag = "@@@";
Timer timer = new Timer();
private int i = 0;
private TextView text = null;
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// TODO Auto-generated method stub
super.handleMessage(msg);
int msgId = msg.what;
Log.e(tag, msgId + "");
switch (msgId)
{
case 1:
text.setText("one more per second" + i);
i++;
break;
default:
break;
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView)findViewById(R.id.text);
setTimerTask();
}
@Override
protected void onDestroy()
{
super.onDestroy();
timer.cancel();
}
private void setTimerTask()
{
timer.schedule(new TimerTask()
{
@Override
public void run()
{
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
}, 0, 1000); }
}
上面的代码可以运行。我改了下代码:如下
package com.timetry;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;import java.util.Timer;
import java.util.TimerTask;public class TimetryActivity extends Activity {
/** Called when the activity is first created. */
private String tag = "@@@";
Timer timer = new Timer();
private int i = 0;
private TextView text = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView)findViewById(R.id.text);
setTimerTask();
}
@Override
protected void onDestroy()
{
super.onDestroy();
timer.cancel();
}
private void setTimerTask()
{
timer.schedule(new TimerTask()
{
@Override
public void run()
{
text.setText("one more per second" + i);
i++;
}
}, 0, 1000); }
}
这样就不行了,运行的时候没显示,调试的时候会报 source not found。
这是怎么回事,我改的代码有问题吗?
就是我要周期性的做一些事,比如我拿着手机走动,周期性的获得无线路由SSID,这些代码我一定写在handler中吗?
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;import java.util.Timer;
import java.util.TimerTask;public class TimetryActivity extends Activity {
/** Called when the activity is first created. */
private String tag = "@@@";
Timer timer = new Timer();
private int i = 0;
private TextView text = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView)findViewById(R.id.tv1);
setTimerTask();
}
@Override
protected void onDestroy()
{
super.onDestroy();
timer.cancel();
}
private void setTimerTask()
{
timer.schedule(new TimerTask()
{
@Override
public void run()
{
Message message = new Message();
message.what = 1;
Bundle bundle = new Bundle();
bundle.putString("msg", "one more per second" + i);
message.setData(bundle);
handler.sendMessage(message);
i++;
}
}, 0, 1000); }
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// TODO Auto-generated method stub
super.handleMessage(msg);
int msgId = msg.what;
Log.e(tag, msgId + "");
switch (msgId)
{
case 1:
Bundle bundle = msg.getData();
text.setText(bundle.getString("msg"));
i++;
break;
default:
break;
}
}
};
}
case 1:下面添加如下代码:
mWiFiManager01 = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);
mWiFiManager01.startScan();
程序会报错,就是getSystemService这个函数不识别,我放在别的地方没问题阿。其实我想做的东西就是让手机周期性的搜索周围的无线路由。
mWiFiManager01.startScan();