0
を切断した後、エラーが発生した場合にのみ機能します。Androidのサービスは、USBを接続したときにUSBが、私はInstagramの</strong> 10秒ごとに、 から<strong>ネットワークデータを引き出し、新しいものがあるならば、<strong>通知</strong>を送信<strong>Androidのサービス</strong>を書いています
USBデバッグがオンの場合(Logcatで何か見ることができます) USBを切断するとエラーが発生します。
Logcatはここで...
を働いていないときにのみ誤りが発生したので、私はデバッグには考えているか、そこに何が起こっているかログをチェックし、 は複雑さのため申し訳ありません(私のサービスコードについてです。 。)
@Override
public void onCreate() {
super.onCreate();
// some initializations, fetch the access token, setup the API library ..
oauthSession = new InstagramOAuthSession(getApplicationContext());
String accessToken = oauthSession.getAccessToken();
instagramFacade = new InstagramFacadeImp(accessToken);
session = new InstagramDataSession(this);
try {
followers = session.readFollowers();
Log.d("myLog", "Read Result: " + followers);
} catch (IOException e) {
Log.d("myLog","Io Error: " + e.getMessage());
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent,flags,startId);
Log.d("myLog", "Service start");
handler.post(checkUnfollowedTask); //task is a runnable
return START_REDELIVER_INTENT;
}
private Runnable checkUnfollowedTask = new Runnable() {
@Override
public void run() {
AsyncTaskHelper.runAsyncTask(new AsyncTask<Void, Void, List<User>>() {
@Override
protected List<User> doInBackground(Void... voids) {
try {
//to pull some network data from instagram
FollowInfoViewModel model = instagramFacade.getFollowInfoViewModel();
//save data into the internal storage
session.saveFollowers(model.getFollowerUsers());
return model.getFollowerUsers();
} catch (Exception e) {
Log.d("myLog","Error: " + e.getMessage());
}
return null;
}
@Override
protected void onPostExecute(List<User> users) {
super.onPostExecute(users);
//some business logics
Log.d("myLog", "New follower: " + users);
followers.removeAll(users);
Log.d("myLog", "New unfollower: " + followers);
createNotification(followers);
followers = users;
}
});
handler.postDelayed(this, 10000); // invoke every ten seconds
}
};
そして、すべての通知を作成するためのロジックについてです。
、感謝の潜在的なエラーを見つけるか、私にデバッグにいくつかの方法を提供するために私を助けてください。private void createNotification(List<User> unfollowers) { if (unfollowers.size() > 0) Log.d("myLog", "Unfollower detected, creatre a notification."); NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); List<Notification> notifications = buildNotifications(unfollowers); for (int i = 0; i < notifications.size(); i++) notificationManager.notify(i, notifications.get(i)); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) private List<Notification> buildNotifications(List<User> unfollowers) { List<Notification> notifications = new ArrayList<>(); Context context = getApplicationContext(); Notification.Builder builder = new Notification.Builder(context); for (int i = 0; i < unfollowers.size(); i++) { User unfollower = unfollowers.get(i); Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(context, i, intent, PendingIntent.FLAG_UPDATE_CURRENT); Notification notification = builder.setSmallIcon(R.drawable.doge) .setContentTitle(getString(R.string.receive_unfollow_notification)) .setContentText(unfollower.getFull_name() + "(" + unfollower.getUsername() + ")"+ getString(R.string.unfollowed_you)) .setDefaults(Notification.DEFAULT_ALL) .setContentIntent(pendingIntent) .setAutoCancel(true) .setVisibility(Notification.VISIBILITY_PUBLIC) .setPriority(Notification.PRIORITY_HIGH) .build(); notifications.add(notification); } return notifications; }