IntentService를 확장하는이 서비스가 있습니다.IntentService의 명확성
public class RefreshService extends IntentService {
static final String TAG = "RefreshService";
public RefreshService() {
super(TAG);
}
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "onCreated");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroyed");
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
protected void onHandleIntent(Intent intent) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
final String username = prefs.getString("username", "").trim();
final String password = prefs.getString("password", "").trim();
Log.d(TAG, "onDestroyeds");
if (TextUtils.isEmpty(username) || (TextUtils.isEmpty(password))){
Toast.makeText(this, "Please update your username and password", Toast.LENGTH_LONG).show();
return;
}
// here code for fetching data and inserting into db.
}
}
설정이없는 대신 토스트 메시지되는 쇼, 나는 다음과 같은 오류가 발생합니다. onHandleIntent 방법의 코드가 다른 스레드에서 실행되는
- 나는 다음을 믿고있어
07-12 18:28:33.125 2961-2961/com.example.krishna.yamba I/menu_item_selected﹕ [0,Refresh] 07-12 18:28:33.143 2961-2961/com.example.krishna.yamba D/RefreshService﹕ onCreated 07-12 18:28:33.147 2961-3637/com.example.krishna.yamba D/RefreshService﹕ onDestroyeds 07-12 18:28:33.147 2961-3637/com.example.krishna.yamba D/RefreshService﹕ onDestroyeds 07-12 18:28:33.181 2961-2961/com.example.krishna.yamba D/RefreshService﹕ onDestroyed 07-12 18:28:33.197 2961-3637/com.example.krishna.yamba W/MessageQueue﹕ Handler (android.view.ViewRootImpl$ViewRootHandler) {38f6505f} sending message to a Handler on a dead thread java.lang.IllegalStateException: Handler (android.view.ViewRootImpl$ViewRootHandler) {38f6505f} sending message to a Handler on a dead thread at android.os.MessageQueue.enqueueMessage(MessageQueue.java:325) at android.os.Handler.enqueueMessage(Handler.java:631) at android.os.Handler.sendMessageAtTime(Handler.java:600) at android.os.Handler.sendMessageDelayed(Handler.java:570) at android.os.Handler.post(Handler.java:326) at android.view.ViewRootImpl.loadSystemProperties(ViewRootImpl.java:5413) at android.view.ViewRootImpl.<init>(ViewRootImpl.java:378) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:253) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) at android.widget.Toast$TN.handleShow(Toast.java:414) at android.widget.Toast$TN$1.run(Toast.java:322) at android.os.Handler.handleCallback(Handler.java:738) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.os.HandlerThread.run(HandlerThread.java:61)
사실이다.
- 따라서 여기에 집중적 인 작업을 수행하는 것이 좋습니다. (이 경우 방금 db 가져 오기 및 업데이트 중입니다)
설정이 올바른 경우 모든 것이 정상적으로 작동합니다. 그런 다음 가져 오기 및 업데이트에 비해 축배 메시지를 넣는 것이 문제가되지 않아야합니다.
설정이 비어있는 경우 축배 메시지를 넣는 방법은 무엇입니까?
을 사용 :
IntentService
에Toast
을 보여주기 위해, 당신은 같은 것을 할 필요가? 앱 내부의 사용자가 시작할 때만 실행됩니까? 또는 백그라운드에서 임의로 시작할 수 있습니까 (예 : AlarmManager)? – Karakuri실제로 두 방법 모두 –