我开发了一个Android应用程序,已经在谷歌播放中推出了它。它已经被很多人下载(大约200-300)。现在我的问题是我想知道我的用户是否在线。实际上我想在用户上线时在我的服务器中为该用户执行特定操作。我怎么知道用户在线并且当前正在查看我的应用程序屏幕?
我已经尝试过以下代码,只能说明设备是否具有互联网连接...
private boolean isOnline()
{
try
{
ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
catch (Exception e)
{
return false;
}
}
我如何知道我的用户现在是否正在查看我的应用屏幕?我希望有一个选项可用于此!
答案 0 :(得分:2)
尝试在onResume
和onPause
方法中添加一些代码
@Override
public void onResume() {
super.onResume();
isOnline(true);
}
}
@Override
public void onPause() {
super.onPause();
isOnline(false);
}
答案 1 :(得分:1)
实施广播接收器类,如下所示,每当互联网上线时发送广播:
public class InternetReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
boolean isConnected = new ConnectionDetector(context)
.isConnectedToInternet();
if (isConnected) {
//user is connected
}
}
public boolean isConnectedToInternet(){
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
return false;
}
}
在Manifest中定义为:
<receiver android:name="com.example.InternetReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>