#android #android-activity #wear-os
#Android #android-активность #wear-os
Вопрос:
Я создал простое приложение, которому нужно (да, это действительно так) показывать предупреждение о погружении. Я реализовал это с помощью активности, запущенной из службы. Большую часть времени она отображается правильно, но иногда, когда устройство для ношения простаивает, этого не происходит. запускаются OnStart () и onResume (), но представление не отображается на экране. Есть идеи?
(Это на Android Gear в режиме реального времени из ввода-вывода)
Она запускается из службы с помощью :
Intent i = new Intent(MyService.this, MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setAction("disconnected");
startActivity(i);
Некоторые действия кодируют:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("MyActivity", "onCreate");
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON|
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
setContentView(R.layout.activity);
disconnectedView = (TextView)findViewById(R.id.disconnectedView);
}
@Override
protected void onStart() {
super.onStart();
Log.d("MyActivity", "onStart");
}
@Override
protected void onResume() {
// Corrected after comment from MikeC
//super.onStart();
super.onResume();
Log.d("MyActivity", "onResume");
if (getIntent().getAction() != null amp;amp; getIntent().getAction().equals("disconnected"))
startVibration();
}
Комментарии:
1. Почему ваш onResume вызывает super.OnStart()?
2. Да, это не должно. К сожалению, это не было настоящей проблемой. Я все еще вижу то же поведение. Но спасибо за вашу помощь.
3. Пожалуйста, обновите код, чтобы исправить его (без super.OnStart()). Также отображается ли уведомление вообще (на телефоне)? Или это работает не только на Wear?
4. Она запущена только на устройстве wear. Я все еще вижу эту проблему.
Ответ №1:
Вместо этого попробуйте установить флаги в onResume()
, кажется, у меня сработало.
@Override
public void onResume()
{
super.onResume();
// Keep awake
getWindow().addFlags( WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON );
}