(在这里编辑 - 下面是原始帖子)
我已将原来的问题缩小为:对于常规活动和应用程序小部件配置活动,主页键的行为根本不同。
我用以下最小活动进行了测试:
public class TestActivity extends Activity {
Logger logger = Logger.getLogger("logger");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onUserLeaveHint() {
logger.info("userleave");
super.onUserLeaveHint();
}
}
使用这个简单的活动创建一个简单的应用程序可以按预期工作。创建最简单的可能没有任何功能的小部件,使用此活动作为应用程序小部件配置活动,LogCat 不会获取我们的 logger.info()。
有什么线索吗?
此致
(原帖在这里)
我有一个工作小部件,由启动活动的按钮组成。其中之一是配置活动,它适合兼作“应用程序小部件配置活动” - 即当用户将小部件嵌入到主屏幕中时调用它。
按照 Android 开发指南,我将此代码添加到设置活动中:
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
RemoteViews views = new RemoteViews(this.getPackageName(), R.layout.widgetlayout);
appWidgetManager.updateAppWidget(appWidgetId, views);
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
setResult(RESULT_OK, resultValue);
finish();
}
}
添加到 onCreate() 中后,该活动不会出现 - 非常符合逻辑,因为它调用 finish(),并且其他一切都按预期工作。
我想做的是将其添加到 onPause() 中,因为使用后退或主页按钮退出配置活动是令人愉快的,因为缺少“保存并退出”按钮意味着自动保存。
在onPause()中添加,小部件未嵌入到主屏幕。 LogCat 不会显示任何比信息更严重的内容。
编辑:
缩小到涉及 onPause() 和硬件主页按钮的问题。硬件后退按钮可让小部件嵌入主屏幕。
如果有人有提示,我将非常高兴,提前谢谢您。