私の主な活動には、インターネット ステータス TextView があります。その TextView で、インターネット接続が有効かどうかを表示したいと思います。10秒ごとにステータスを更新する必要があります。
別のスレッドでこれを行う必要があることはわかっていますが、多くのことを試しました。私は完璧な解決策を得ていません。
public class MainActivity extends Activity {
ImageView imageView;
TextView internetStausTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
internetStausTextView = (TextView) findViewById(R.id.tv1);
new InternetChecker();
}
public class InternetChecker implements Runnable {
Thread t;
boolean internetStatus;
ConnectivityManager conMgr;
public InternetChecker() {
t = new Thread(this);
t.start();
conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
}
public void run() {
while (true) {
if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED
|| conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) {
internetStatus = true;
} else if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED
|| conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED) {
internetStatus = false;
}
runOnUiThread(new Runnable() {
public void run() {
if (internetStatus)
internetStausTextView.setText("connected");
else
internetStausTextView.setText("Not connected.");
}
});
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
}
}
}
これが私のコードです....しかし、アプリのパフォーマンスに影響を与えています。
サブクラス InternetChecker を別のファイルに取り出すのを手伝ってくれる人はいますか。