我创建了一个应用程序:启动服务(SmartphoneListener)的活动(MainActivity)。
活动
public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this,SmartphoneListener.class);
startService(intent);
}
}该服务用于检测(在智能手机上)与智能手表的连接是否断开。
服务
public class SmartphoneListener extends WearableListenerService {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyWakelockTag"); //Service running even if the screen is off.
wakeLock.acquire();
return START_STICKY;
}
@Override
public void onPeerDisconnected(Node node){
Toast.makeText(getApplicationContext(),"Communication with smartwatch lost",Toast.LENGTH_SHORT).show();
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
registerReceiver(mIntentReceiver, filter);
}
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent) {
//
}
};
...
}如果我的应用程序是打开的,并且智能手机屏幕关闭,我可以检测到我是否与smartwatch失去了连接(执行mIntentReceiver代码)。然后,如果我关闭我的应用程序,智能手机屏幕关闭,我无法检测到我是否失去了与智能手表的连接( mIntentReceiver代码不会执行)。我也不知道原因。
发布于 2015-12-11 23:22:36
尝试添加
filter.addAction(Intent.ACTION_SCREEN_OFF);发送到您的IntentFilter。希望它能帮上忙!
发布于 2015-12-12 00:39:22
你在回复我的评论时解释说,你正在通过从最近的任务列表中滑动来“关闭”应用程序。此操作会导致终止应用程序的进程。由于您在服务中从onStartCommand()返回START_STICKY,因此系统将在新进程中创建您的应用程序的新实例,并调用onStartCommand()重新启动您的服务。这是您的应用程序中唯一的条目。不会重新创建任何活动。我对Wear知之甚少。我猜你的应用程序会执行一些配置处理来定位和连接到节点。如果该处理是在某些活动中完成的,例如启动活动,则在重新创建应用程序以重新启动服务时将不会执行该处理。
https://stackoverflow.com/questions/34226308
复制相似问题