0
public class FBPost extends Service{
private Bundle params = new Bundle();
private String userID="";
String response;
public void onCreate(String userID,String name)
{
super.onCreate();
params.putString("message", "Test " + new Date().toLocaleString());
params.putString("caption", "Hey there");
this.userID=userID;
}
@Override
public int onStartCommand(Intent intent , int flags , int startId)
{
if(checkInternetConnection())
{
fb_post();
return 0;
}
else
{
BroadcastReceiver connec_recv= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(checkInternetConnection())
fb_post();
}
};
final IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(connec_recv, intentFilter);
}
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
private boolean checkInternetConnection() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// test for connection
if (cm.getActiveNetworkInfo() != null
&& cm.getActiveNetworkInfo().isAvailable()
&& cm.getActiveNetworkInfo().isConnected()) {
try{
URL url = new URL("http://www.google.com");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
in.close();
return true;
} catch (Exception e) {
return false;
}
}
return false;
}
private void fb_post()
{
//MORE CODE
}
}
如果仍然沒有互聯網連接性,該怎麼辦?我應該從廣播接收者而不是fb_post()調用另一個相同服務的實例嗎?每當連接廣播接收器收到連接更改廣播時,是否可以等待服務(),然後通知()?Android:檢查互聯網連接的服務內部,並等到互聯網連接建立
對不起,有點忘了我的問題。那麼,我不能在廣播接收機中再次撥打該服務?但是我只能有一個服務實例,那麼這是否意味着在這個服務完成之前沒有其他FBPosts可以通過?或者我會得到服務泄漏? – Anmol 2012-07-23 21:10:07
@Anmol,如果沒有連接並且無法完成任務,則應該停止服務。沒有進一步運行的感覺。 – Egor 2012-07-24 07:22:00