Tôi cố gắng để autostart ứng dụng nightclock tôi trên sạc sử dụng phương pháp BroadcastReceiver sau thực hiện trong onPause():startActivity() từ BroadcastReceiver
BroadcastReceiver test = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
unregisterReceiver(this);
Intent i = new Intent(context, NightClock.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
};
registerReceiver(test, new IntentFilter(Intent.ACTION_POWER_CONNECTED));
Phương pháp onReceive() được kích hoạt khi USB-cáp là đã được cắm nhưng hoạt động không bắt đầu. Tuy nhiên nhật ký cho thấy điều này:
I/ActivityManager( 79): Starting activity: Intent { flg=0x10000000 cmp=com.meins.nightclock/.NightClock }
Bất kỳ ý tưởng nào tại sao nhật ký cho biết hoạt động được bắt đầu nhưng không có gì xảy ra?
Vui lòng cập nhật sự cố của bạn với nhiều thứ khác từ LogCat - một vài dòng trước dòng này và một vài dòng trước dòng này. Ngoài ra, tại sao 'FLAG_ACTIVITY_NEW_TASK'? Ngoài ra, có phải hoạt động đã đăng ký 'BroadcastReceiver' này vẫn tồn tại khi ACTION_POWER_CONNECTED xảy ra không? – CommonsWare
Không còn dòng nào trong LogCat khi kết nối với nguồn điện. 'BroadcastReceiver' được đăng ký trong cùng một hoạt động mà nó sẽ bắt đầu. Hoạt động này vẫn đang chạy trong nền (ứng dụng LogCat đã được đưa ra trước). Nếu hoạt động này bị giết trong taskmanager, thì 'BroadcastReceiver' dường như không kích hoạt. Cách tiếp cận này để tự khởi động ứng dụng của tôi sai từ đầu? – Gubbel