Background Service 가 Display ON상태거나, OFF 상태이지만 충전이 진행중(케이블 연결)이면 정상적으로 작동을 합니다. 하지만 Display OFF상태에서 충전을하지 않고 있으면 실행이 되질 않습니다.(베터리는 충전풀상태)
도대체 어디가 잘못되었는지 모르겠습니다. 도움 부탁드립니다.
<Manifest.xml >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<service android:name=".BackgroundService" android:exported="false" />
<MainActivity.java>
protected void onCreate(Bundle savedInstanceState) {
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Message msg = new Message();
if(intent.getStringExtra("end") != null){
handler.sendEmptyMessage(1);
}else{
String result = intent.getStringExtra("result");
msg.what = 0;
msg.obj = result;
handler.sendMessage(msg);
}
}
};
}
==버튼클릭시==
Intent serviceIntent = new Intent(this.getBaseContext(), BackgroundService.class);
serviceIntent.putExtra("kwd" , et_kwd.getText().toString());
serviceIntent.putExtra("url" , et_url.getText().toString());
serviceIntent.putExtra("stay", et_stay.getText().toString());
startService(serviceIntent);
<Backgroundservice.java>
private static LocalBroadcastManager broadcaster;
private static Thread mThread;
public static boolean serviceRunning = false;
@Override
public void onCreate(){
super.onCreate();
broadcaster = LocalBroadcastManager.getInstance(this);
//stopTask = false;
serviceRunning = true;
}
@Override
public void onStart(Intent intent, int startId) {
invokeService(intent);
}
//백그라운드 실제 작업실행
public void invokeService(Intent intent){
if (mThread == null) {
mThread = new BackgroundThread();
mThread.start();
}else if(mThread.isAlive() == false) {
mThread.start();
}
}